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文件
#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();
void wtMsg(const QString qstring); //写消息内容
private:
Ui::msgDialog *ui;
};
#endif // MSGDIALOG_H
.cpp文件
#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中
#include <QMainWindow>
#include <QDebug>
#include <msgDialog.h>
#include <QString>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
msgDialog msgdialog; //声明一对象
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中调用部分
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
- 博客网址:
- 博 主: lyc_daniel
- 寄 语:神爱世人,甚至将他的独生子(耶稣)赐给他们,叫一切信他的,不至灭亡,反得永生。(圣经·约翰福音3:16)