Qt如何实现多窗口调用

点击打开原博文

A. 环境:windows 7 + qt-4.7.4 + qtcreator-2.3.1

B. 在进行多窗口设计并调用之前,可以先了解一下知识。

1.对设计的UI进行预览Preview,快捷键Alt+Shift+R



2.ui的形式有多种

(1)添加Dialog形式


(2)添加Main Window形式


(3)添加Widget形式


之所以给出上述距离,是因为如果是qtcreator内添加Form类,其ui无法收到改动头标内容,但可以同时添加form所对应的.h和.cpp文件;如果是visual studio 2008内添加form类,其ui可以收到改动头标,但不能同时添加form所对应的.h和.cpp文件。两种方案各有优劣!但建议使用qtcreator,比较可以跨平台使用!!!


C.以添加一QDialog类msgDialog为例

1.ui如图所示


2.对应的头文件.h和源文件.cpp修改之处如下:

.h文件

[cpp]  view plain copy
  1. #ifndef MSGDIALOG_H  
  2. #define MSGDIALOG_H  
  3.   
  4. #include <QDialog>  
  5.   
  6. namespace Ui {  
  7.     class msgDialog;  
  8. }  
  9.   
  10. class msgDialog : public QDialog  
  11. {  
  12.     Q_OBJECT  
  13.   
  14. public:  
  15.     explicit msgDialog(QWidget *parent = 0);  
  16.     ~msgDialog();  
  17.   
  18.     <span style="color:#ff0000">void wtMsg(const QString qstring); //写消息内容</span>  
  19.   
  20. private:  
  21.     Ui::msgDialog *ui;  
  22. };  
  23.   
  24. #endif // MSGDIALOG_H  

.cpp文件

[cpp]  view plain copy
  1. #include "msgdialog.h"  
  2. #include "ui_msgdialog.h"  
  3.   
  4. msgDialog::msgDialog(QWidget *parent) :  
  5.     QDialog(parent),  
  6.     ui(new Ui::msgDialog)  
  7. {  
  8.     ui->setupUi(this);  
  9. }  
  10.   
  11. msgDialog::~msgDialog()  
  12. {  
  13.     delete ui;  
  14. }  
  15.   
  16.   
  17. void msgDialog::wtMsg(const QString qstring)  
  18. {  
  19.     ui->label->setText(qstring); //写内容  
  20.   
  21. }  

在MainWindow类中对该Dialog类进行调用

.h中

[cpp]  view plain copy
  1. #include <QMainWindow>  
  2. #include <QDebug>  
  3. <span style="color:#ff0000">#include <msgDialog.h></span>  
  4. #include <QString>  
  5.   
  6. namespace Ui {  
  7.     class MainWindow;  
  8. }  
  9.   
  10. class MainWindow : public QMainWindow  
  11. {  
  12.     Q_OBJECT  
  13.   
  14. public:  
  15.     explicit MainWindow(QWidget *parent = 0);  
  16.     ~MainWindow();  
  17.   
  18.    <span style="color:#ff0000"> msgDialog msgdialog; //声明一对象</span>  
  19.   
  20. public slots:  
  21.     void on_pushButton_clicked();  
  22.     void on_pushButton_2_clicked();  
  23.     void iSlot(); //int b  
  24.   
  25. signals:  
  26.     void iSignal(int a, float b);  
  27.   
  28. private:  
  29.     Ui::MainWindow *ui;  
  30. };  
  31.   
  32. #endif // MAINWINDOW_H  



.cpp中调用部分

[cpp]  view plain copy
  1. void MainWindow::on_pushButton_clicked()  
  2. {  
  3.    // emit iSignal(5, 0.3);  
  4.     QString qstring = "lyc_daniel";  
  5.     msgdialog.wtMsg(qstring);  
  6.    // msgdialog.show();  
  7.     msgdialog.exec();  
  8.   
  9. }  

采用函数show与exec有区别,前者除了操作当前界面外,还可以操作其他界面;后者只允许操作当前界面。

调用后的结果如下:




文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0
  • 博客网址:http://blog.csdn.net/lyc_daniel/article/details/12837491
  • 博       主: lyc_daniel
  • 寄       语:神爱世人,甚至将他的独生子(耶稣)赐给他们,叫一切信他的,不至灭亡,反得永生。(圣经·约翰福音3:16)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值