VS2012下QT creator登錄對(duì)話框設(shè)計(jì)
最近看《Qt教程及軟件》學(xué)習(xí)QT,這本書的編程是在Qt creator上進(jìn)行的,本人更傾向于在VS2012上進(jìn)行開(kāi)發(fā),故根據(jù)自己實(shí)驗(yàn)中的經(jīng)驗(yàn),筆記一下在VS2012進(jìn)行Qt編程的一些問(wèn)題及解決方法,本人用的是Qt5.3版本。
首先,新建一個(gè)工程
選擇Qt Application,填寫工程名
一直Next,Base class選擇QWidget,點(diǎn)擊Finish創(chuàng)建
此時(shí)項(xiàng)目未添加對(duì)應(yīng)的include文件,有許多地方顯示“can not open source file……”。選擇菜單欄PROJECT->User Properties… 進(jìn)入添加頭文件設(shè)置頁(yè)面
點(diǎn)擊“Additional Include Directories”進(jìn)行編輯,添加你QT安裝目錄下的以下文件夾
新建一個(gè)對(duì)話類,右鍵項(xiàng)目名,添加新類
選擇Qt5 Classes,雙擊 Qt5GuiClasses
Base Class填QDialog,點(diǎn)擊Finish完成創(chuàng)建
然后就進(jìn)行ui布置了,在logindlg.ui中設(shè)計(jì)下面的界面:行輸入框?yàn)長(zhǎng)ine Edit。其中用戶名后面的輸入框在屬性中設(shè)置其object Name為usrLineEdit,密碼后面的輸入框?yàn)閜wdLineEdit,登錄按鈕為loginBtn,退出按鈕為exitBtn。設(shè)置完如下圖:
點(diǎn)擊選擇”編輯信號(hào)/槽“,按住退出按鈕拖一下
,彈出對(duì)話框,信號(hào)選擇clicked(),槽選擇close(),實(shí)現(xiàn)點(diǎn)擊退出功能。若沒(méi)有close(),選擇“顯示從QWidget繼承的信號(hào)和槽”。
按照上面方法設(shè)置登錄按鈕的信號(hào)與槽,其槽函數(shù)要自己寫,所以槽選擇那里點(diǎn)擊編輯,新增一個(gè)slot1(),改名為on_loginBtn_clicked()。點(diǎn)擊確定。保存Qt 設(shè)計(jì)師并關(guān)閉。
回到VS2012,修改main.cpp:
#include "user.h" #include <QtWidgets/QApplication> #include "logindlg.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); User w; loginDlg login; if(login.exec() == QDialog::Accepted) { w.show(); return a.exec(); } else return 0; }
接著修改loginDlg.cpp,先在loginDLg.h中添加之前的槽函數(shù)的聲明。
#ifndef LOGINDLG_H #define LOGINDLG_H #include <QDialog> #include "ui_logindlg.h" class loginDlg : public QDialog { Q_OBJECT public: loginDlg(QWidget *parent = 0); ~loginDlg(); private: Ui::loginDlg *ui; //這里定義ui為指向類的指針 private slots: void on_loginBtn_clicked(); //槽函數(shù)聲明 }; #endif // LOGINDLG_H
最后在loginDlg.cpp中定義槽函數(shù),實(shí)現(xiàn)正確輸入帳號(hào)密碼則進(jìn)入主窗口,否則報(bào)錯(cuò)。
void loginDlg::on_loginBtn_clicked() { if(ui->usrLineEdit->text() == tr("caddress")&&ui->pwdLineEdit->text()==tr("123456")) accept(); else{ QMessageBox::warning(this,tr("Warning"),tr("user name or password error!"),QMessageBox::Yes): } }
至此,程序還有許多錯(cuò)誤,有大部分頭文件未找到,按照上面的方法繼續(xù)添加相應(yīng)文件夾:
添加完后點(diǎn)擊編譯,則相應(yīng)的頭文件就找到了。
loginDlg.cpp完整代碼:
#include "logindlg.h" #include <qmessagebox> //添加該頭文件才能使用QMessageBox loginDlg::loginDlg(QWidget *parent) : QDialog(parent) { (*ui).setupUi(this); //這里ui需要為類類型,所以得解指針 } loginDlg::~loginDlg() { } void loginDlg::on_loginBtn_clicked() { if(ui->usrLineEdit->text() == tr("caddress")&&ui->pwdLineEdit->text()==tr("123456")) //這里需要指針,直接使用ui accept(); else{ QMessageBox::warning(this,tr("Warning"),tr("user name or password error!"),QMessageBox::Yes); } }
點(diǎn)擊編譯就能實(shí)現(xiàn)功能
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
EFCore 通過(guò)實(shí)體Model生成創(chuàng)建SQL Server數(shù)據(jù)庫(kù)表腳本
這篇文章主要介紹了EFCore 通過(guò)實(shí)體Model生成創(chuàng)建SQL Server數(shù)據(jù)庫(kù)表腳本的示例,幫助大家更好的理解和學(xué)習(xí)使用.net框架,感興趣的朋友可以了解下2021-03-03談?wù)勅绾卧贏SP.NET Core中實(shí)現(xiàn)CORS跨域
本篇文章主要介紹了如何在ASP.NET Core中實(shí)現(xiàn)CORS跨域,CORS主要是解決Ajax跨域限制的問(wèn)題,有興趣的可以了解一下。2016-12-12一個(gè)簡(jiǎn)單的asp.net 單點(diǎn)登錄實(shí)現(xiàn)
上次做了學(xué)校的火車訂票系統(tǒng),那邊要求要從學(xué)生信息平臺(tái)直接點(diǎn)過(guò)來(lái)就是登錄狀態(tài),不用在重新登錄。學(xué)生信息平臺(tái)原來(lái)是用asp做的,而火車訂票系統(tǒng)是asp.net做的。兩個(gè)網(wǎng)站的學(xué)生信息調(diào)用的是同一個(gè)數(shù)據(jù)庫(kù)。2009-11-11asp.net開(kāi)發(fā)中常見(jiàn)公共捕獲異常方式總結(jié)(附源碼)
這篇文章主要介紹了asp.net開(kāi)發(fā)中常見(jiàn)公共捕獲異常方式總結(jié),結(jié)合實(shí)例形式較為詳細(xì)的分析了asp.net捕獲異常的相關(guān)技巧,并提供了完整的實(shí)例代碼供讀者下載參考,需要的朋友可以參考下2015-11-11