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
#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); //写内容 }
.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(); }
调用后的结果如下: