Qt学习笔记(二)

来源:互联网 发布:centos ntfs 挂载 编辑:程序博客网 时间:2024/05/16 11:46

工程建立及功能描述:

首先,建立Qt  Gui应用,基类选择QMainWindow。然后右击项目,添加Qt设计器界面类,类名取为mydialog。我们在这里假设一个窗口是登录对话框,另一个窗口是主界面;登录对话框有两个按钮,分别更改显示文本为login,exit;主界面也有两个按钮,分别更改显示文本为relogin,quit.。我们最终的实现功能是:程序运行时,出现登录对话框,点击login按钮进入主界面且登录对话框消失;在主界面点击relogin按钮回到登录对话框且主界面消失,点击exit按钮或quit按钮都会退出程序。

mainwindow.h

#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include <QMessageBox>namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{    Q_OBJECTpublic:    explicit MainWindow(QWidget *parent = 0);    ~MainWindow();private:    Ui::MainWindow *ui;private slots:    void receivelogin();//与login中发射的信号关联的槽函数    void on_pushButton_clicked();//与relogin的click()关联的槽函数    void on_pushButton_2_clicked();//与quit的click()关联的槽函数signals:    void dlgshow();//显示登录对话框信号    void quit();//退出信号};#endif // MAINWINDOW_H

mydialog.h

#ifndef MYDIALOG_H#define MYDIALOG_H#include <QDialog>#include <QMessageBox>namespace Ui {class MyDialog;}class MyDialog : public QDialog{    Q_OBJECTpublic:    explicit MyDialog(QWidget *parent = 0);    ~MyDialog();private slots:    void on_pushButton_clicked();//与登录关联的槽函数    void receiveshow();//与relogin中发射的信号关联的槽函数    void on_pushButton_2_clicked();//与退出关联的槽函数    signals:    void showmainwindow();//显示主窗口信号    void quit();//退出信号private:    Ui::MyDialog *ui;};#endif // MYDIALOG_H

main.cpp

#include <QApplication>#include "mainwindow.h"#include"mydialog.h"int main(int argc, char *argv[]){    QApplication a(argc, argv);    MainWindow w;    MyDialog dlg;    dlg.show();    //信号与槽之间进行关联    QObject::connect(&dlg,SIGNAL(showmainwindow()),&w,SLOT(receivelogin()));    QObject::connect(&w,SIGNAL(dlgshow()),&dlg,SLOT(receiveshow()));    QObject::connect(&w,SIGNAL(quit()),&a,SLOT(quit()));    QObject::connect(&dlg,SIGNAL(quit()),&a,SLOT(quit()));    return a.exec();}

mainwindow.cpp

#include "mainwindow.h"#include "ui_mainwindow.h"#include<QPushButton>#include<QHBoxLayout>MainWindow::MainWindow(QWidget *parent) :    QMainWindow(parent),    ui(new Ui::MainWindow){    ui->setupUi(this);//默认是类名    setWindowTitle(tr("myMainWindow"));}MainWindow::~MainWindow(){    delete ui;}void MainWindow::receivelogin(){    this->show();//显示主窗口}void MainWindow::on_pushButton_clicked(){    this->hide();//隐藏主窗口    emit dlgshow();//发射显示登录对话框信号}void MainWindow::on_pushButton_2_clicked(){    emit quit();//发射退出信号}

mydialog.cpp

#include "mydialog.h"#include "ui_mydialog.h"#include<QHBoxLayout>#include<mainwindow.h>MyDialog::MyDialog(QWidget *parent) :    QDialog(parent),    ui(new Ui::MyDialog){    ui->setupUi(this);    ui->lineEdit_2->setEchoMode(QLineEdit::Password);}MyDialog::~MyDialog(){    delete ui;}void MyDialog::on_pushButton_clicked(){    if(ui->lineEdit->text()==tr("qt")&&ui->lineEdit_2->text()==tr("123"))//用户名和密码判断    {        this->hide();//隐藏登录对话框        emit showmainwindow();//显示主窗口    }    else    {        QMessageBox::warning(this,tr("Warning"),("user name or password wrong!"),QMessageBox::Yes);    //警告对话框        ui->lineEdit->clear();                      //清除用户名        ui->lineEdit_2->clear();                 //清除密码        ui->lineEdit->setFocus();              //鼠标回到用户名栏    }}void MyDialog::receiveshow(){    this->show();//显示登录对话框}void MyDialog::on_pushButton_2_clicked(){    emit quit();//发射退出信号}

mainwindow.ui


mydialog.ui


0 0
原创粉丝点击