QT實現記錄上一次使用者名稱和密碼功能
阿新 • • 發佈:2019-02-06
說明:在登入時,為了避免每次開啟軟體都要重新輸入賬號和密碼,可以用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);