1. 程式人生 > >QT實現記錄上一次使用者名稱和密碼功能

QT實現記錄上一次使用者名稱和密碼功能

說明:在登入時,為了避免每次開啟軟體都要重新輸入賬號和密碼,可以用QSettings來實現記錄功能。

本例子中記錄的是ip和port號。

#ifndef PERFORMANCETESTING_H
#define PERFORMANCETESTING_H

#include <QtWidgets/QMainWindow>
#include "ui_performancetesting.h"

class PerformanceTesting : public QMainWindow
{
	Q_OBJECT

public:
	PerformanceTesting(QWidget *parent = 0);
	~PerformanceTesting();

	private slots:
	void PushButton();

	void WriteInit(QString key, QString value);
	void ReadInit(QString key, QString &value);

private:
	Ui::PerformanceTestingClass ui;
};

#endif // PERFORMANCETESTING_H


#include "performancetesting.h"
#include "handlethreadandtest.h"
#include <QDebug>
#include <QMessageBox>
#include <QSettings>
PerformanceTesting::PerformanceTesting(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);

	QString readIP;
	QString readPort;
	ReadInit("IP", readIP);
	ReadInit("PORT", readPort);
	ui.serverIP->setText(readIP);
	ui.serverPort->setText(readPort);
}

PerformanceTesting::~PerformanceTesting()
{
}

void PerformanceTesting::PushButton()
{
	if (ui.serverIP->text() == "" || ui.serverPort->text() == "")
	{
		QMessageBox::information(this, "Warning", "IP and port number can not be empty!", QMessageBox::Ok);
		return;
	}
	WriteInit("IP", ui.serverIP->text());
	WriteInit("PORT", ui.serverPort->text());

	QString ip = ui.serverIP->text();
	int port = ui.serverPort->text().toInt();
	int meetingRoomNum = ui.meetingRoomNum->text().toInt();
	int peopleNum = ui.peopleNum->text().toInt();

	HandleThreadAndTest *threadAndTest = new HandleThreadAndTest();
	threadAndTest->SetIP(ip);
	threadAndTest->SetPort(port);
	threadAndTest->SetMeetingRoomNum(meetingRoomNum);
	threadAndTest->SetPeopleNum(peopleNum);

	this->close();
	threadAndTest->show();
}

void PerformanceTesting::WriteInit(QString key, QString value)
{
	QString path = "ip.ini";

	//建立配置檔案操作物件
	QSettings *config = new QSettings(path, QSettings::IniFormat);

	//將資訊寫入配置檔案
	config->beginGroup("config");
	config->setValue(key, value);
	config->endGroup();
	delete config;
}

void PerformanceTesting::ReadInit(QString key, QString &value)
{
	value = QString("");
	QString path = "ip.ini";

	//建立配置檔案操作物件
	QSettings *config = new QSettings(path, QSettings::IniFormat);

	//讀取配置資訊
	value = config->value(QString("config/") + key).toString();
	delete config;
}



第二次執行時,就會填入第一次輸入的ip和port。


//參考:http://blog.sina.com.cn/s/blog_a6fb6cc90101bz3c.html
bool Util::writeInit(QString path, QString user_key, QString user_value)
{
	if (path.isEmpty() || user_key.isEmpty())
	{
		return false;
	}
	else
	{
		//建立配置檔案操作物件
		QSettings *config = new QSettings(path, QSettings::IniFormat);

		//將資訊寫入配置檔案
		config->beginGroup("config");
		config->setValue(user_key, user_value);
		config->endGroup();

		return true;
	}
}

bool Util::readInit(QString path, QString user_key, QString &user_value)
{
	user_value = QString("");
	if (path.isEmpty() || user_key.isEmpty())
	{
		return false;
	}
	else
	{
		//建立配置檔案操作物件
		QSettings *config = new QSettings(path, QSettings::IniFormat);

		//讀取使用者配置資訊
		user_value = config->value(QString("config/") + user_key).toString();

		return true;
	}
}

//獲取介面使用者輸入的配置內容
QString address = address_line_edit->text();  //地址
QString port = port_line_edit->text();  //埠

向user.ini配置檔案中寫入地址、埠
bool is_address = Util::writeInit(QString("./user.ini"), ADDRESS, address);
bool is_port = Util::writeInit(QString("./user.ini"), PORT, port);

從user.ini配置檔案中讀取地址、埠
QString address_value;
QString port_value;
bool is_address = Util::readInit(QString("./user.ini"), ADDRESS, address_value);
bool is_port = Util::readInit(QString("./user.ini"), PORT, port_value);