信号槽操作案例
2015-08-22 16:27
197 查看
场景:在应用主界面,点击"按钮",弹出用户登陆对话框,用户输入用户名点击登陆,在主界面显示用户输入的用户名.
1:新建Qt Widgets Application,名称:signal-t02
2:在主应用界面(mainwindow.ui)增加一个Label与PushButton,objectName分别为:unameLabel与showLoginDialogBtn.
3: 增加一个Qt设计师界面类->Dialog without Buttons (类名ShowLoginDialog)
在对话框中增加:LineEdit(unameEdit)与PushButton(loginBtn)
4:mainwindow.ui
mainwindow.h
5:
1:新建Qt Widgets Application,名称:signal-t02
2:在主应用界面(mainwindow.ui)增加一个Label与PushButton,objectName分别为:unameLabel与showLoginDialogBtn.
3: 增加一个Qt设计师界面类->Dialog without Buttons (类名ShowLoginDialog)
在对话框中增加:LineEdit(unameEdit)与PushButton(loginBtn)
4:mainwindow.ui
右键"Show Login Dialog Button",转到槽选择clicked,
mainwindow.cpp代码如下:
#include "mainwindow.h" #include "ui_mainwindow.h" #include "showlogindialog.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } //Show Login Dialog void MainWindow::on_showLoginDialogBtn_clicked() { ShowLoginDialog * dlg = new ShowLoginDialog(this); dlg->show(); } //Show username void MainWindow::showUsername(QVariant str) { ui->unameLabel->setText(str.toString()); }
mainwindow.h
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QVariant> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private slots: void on_showLoginDialogBtn_clicked(); void showUsername(QVariant str); //show username private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H
此时运行程序,点击"Show Login Dialog Button"将弹出登陆信息输入对话框.
5:
mainwindow.h
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QVariant> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private slots: void on_showLoginDialogBtn_clicked(); void showUsername(QVariant str); //show username private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h" #include "ui_mainwindow.h" #include "showlogindialog.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } //Show Login Dialog void MainWindow::on_showLoginDialogBtn_clicked() { ShowLoginDialog * dlg = new ShowLoginDialog(this); connect(dlg,&ShowLoginDialog::unameEditChanged,this,&MainWindow::showUsername); dlg->show(); } //Show username void MainWindow::showUsername(QVariant str) { ui->unameLabel->setText(str.toString()); }
showlogindialog.h
#ifndef SHOWLOGINDIALOG_H #define SHOWLOGINDIALOG_H #include <QDialog> namespace Ui { class ShowLoginDialog; } class ShowLoginDialog : public QDialog { Q_OBJECT public: explicit ShowLoginDialog(QWidget *parent = 0); ~ShowLoginDialog(); private slots: void on_loginBtn_clicked(); //定义信号 signals: void unameEditChanged(QString str); private: Ui::ShowLoginDialog *ui; }; #endif // SHOWLOGINDIALOG_H
showlogindialog.cpp
#include "showlogindialog.h" #include "ui_showlogindialog.h" ShowLoginDialog::ShowLoginDialog(QWidget *parent) : QDialog(parent), ui(new Ui::ShowLoginDialog) { ui->setupUi(this); } ShowLoginDialog::~ShowLoginDialog() { delete ui; } //show login dialog void ShowLoginDialog::on_loginBtn_clicked() { QString str = ui->unameEdit->text(); emit unameEditChanged(str); accept(); }
相关文章推荐
- PIL安装
- Wolf and Rabbit(hdu 1222)
- 架构设计:负载均衡层设计方案(5)——LVS单节点安装
- 随机森林实现 MATLAB
- 设计模式之单例模式(线程安全)
- 容器vector的使用总结 容器stack(栈)
- test
- C#自定义签名章实现方法
- C#实现磁性窗体(吸附、剥离、移动)
- SQL server基本语句
- 捕鱼问题
- 分组统计查询(本章小结)
- 2015.8.22
- ACM第六周竞赛题目——B CodeForces 478B
- 树状数组模版
- MFC_CString
- Java的代理模式
- HTML初体验之1——关于HBuilder文件放置
- UI -视图控制器UIViewController
- Nginx启动、重启、关闭