Qt如何实现多窗口调用
2015-12-05 20:46
381 查看
点击打开原博文
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
plaincopy
#ifndef MSGDIALOG_H
#define MSGDIALOG_H
#include <QDialog>
namespace Ui {
class msgDialog;
}
class msgDialog : public QDialog
{
Q_OBJECT
public:
explicit msgDialog(QWidget *parent = 0);
~msgDialog();
<span style="color:#ff0000">void wtMsg(const QString qstring); //写消息内容</span>
private:
Ui::msgDialog *ui;
};
#endif // MSGDIALOG_H
.cpp文件
[cpp] view
plaincopy
#include "msgdialog.h"
#include "ui_msgdialog.h"
msgDialog::msgDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::msgDialog)
{
ui->setupUi(this);
}
msgDialog::~msgDialog()
{
delete ui;
}
void msgDialog::wtMsg(const QString qstring)
{
ui->label->setText(qstring); //写内容
}
在MainWindow类中对该Dialog类进行调用
.h中
[cpp] view
plaincopy
#include <QMainWindow>
#include <QDebug>
<span style="color:#ff0000">#include <msgDialog.h></span>
#include <QString>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
<span style="color:#ff0000"> msgDialog msgdialog; //声明一对象</span>
public slots:
void on_pushButton_clicked();
void on_pushButton_2_clicked();
void iSlot(); //int b
signals:
void iSignal(int a, float b);
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
.cpp中调用部分
[cpp] view
plaincopy
void MainWindow::on_pushButton_clicked()
{
// emit iSignal(5, 0.3);
QString qstring = "lyc_daniel";
msgdialog.wtMsg(qstring);
// msgdialog.show();
msgdialog.exec();
}
采用函数show与exec有区别,前者除了操作当前界面外,还可以操作其他界面;后者只允许操作当前界面。
调用后的结果如下:
版权声明:自由转载-非商用-非衍生-保持署名 | Creative
Commons BY-NC-ND 3.0
博客网址:/article/2006287.html
博 主: lyc_daniel
寄 语:神爱世人,甚至将他的独生子(耶稣)赐给他们,叫一切信他的,不至灭亡,反得永生。(圣经·约翰福音3:16)
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
plaincopy
#ifndef MSGDIALOG_H
#define MSGDIALOG_H
#include <QDialog>
namespace Ui {
class msgDialog;
}
class msgDialog : public QDialog
{
Q_OBJECT
public:
explicit msgDialog(QWidget *parent = 0);
~msgDialog();
<span style="color:#ff0000">void wtMsg(const QString qstring); //写消息内容</span>
private:
Ui::msgDialog *ui;
};
#endif // MSGDIALOG_H
.cpp文件
[cpp] view
plaincopy
#include "msgdialog.h"
#include "ui_msgdialog.h"
msgDialog::msgDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::msgDialog)
{
ui->setupUi(this);
}
msgDialog::~msgDialog()
{
delete ui;
}
void msgDialog::wtMsg(const QString qstring)
{
ui->label->setText(qstring); //写内容
}
在MainWindow类中对该Dialog类进行调用
.h中
[cpp] view
plaincopy
#include <QMainWindow>
#include <QDebug>
<span style="color:#ff0000">#include <msgDialog.h></span>
#include <QString>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
<span style="color:#ff0000"> msgDialog msgdialog; //声明一对象</span>
public slots:
void on_pushButton_clicked();
void on_pushButton_2_clicked();
void iSlot(); //int b
signals:
void iSignal(int a, float b);
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
.cpp中调用部分
[cpp] view
plaincopy
void MainWindow::on_pushButton_clicked()
{
// emit iSignal(5, 0.3);
QString qstring = "lyc_daniel";
msgdialog.wtMsg(qstring);
// msgdialog.show();
msgdialog.exec();
}
采用函数show与exec有区别,前者除了操作当前界面外,还可以操作其他界面;后者只允许操作当前界面。
调用后的结果如下:
文档信息
版权声明:自由转载-非商用-非衍生-保持署名 | CreativeCommons BY-NC-ND 3.0
博客网址:/article/2006287.html
博 主: lyc_daniel
寄 语:神爱世人,甚至将他的独生子(耶稣)赐给他们,叫一切信他的,不至灭亡,反得永生。(圣经·约翰福音3:16)
相关文章推荐
- Opencv--Qt5编译与配置
- Windows下 Qt5.1 not load The QtplatForm plugin "windows"
- QT5 下udp 编程实例
- QT线程(一):线程类 http://blog.csdn.net/calm_agan/article/details/6300709
- QtPropertyBrowser简介
- Qt udp
- Qt5 UDP开发
- 关于QT中对窗口中某个widget建类
- U1077:"C:\Qt5.4.2\5.4\msvc2013_64_opengl\bin\moc.exe":返回代码“0x1”
- Qt The Event System
- qt+opencv3.0配置详解
- 简述QTP自动化测试框架
- 安装qtp时,提示无法安装.NET framework 4.0
- mqtt协议
- PyQt5教程(一)——第一个PyQt5程序
- QT中在MainWindow中代码添加控件
- PyQt之布局&无边框&信号
- Qt界面设计(隐藏窗体标题栏,制作按钮菜单)
- 【Qt】
- 【Qt动画框架】