认识QT ----- 多窗口以及窗口之间的传值
2015-12-01 15:13
531 查看
这次我将来尝试一下,具体任务如下:
QMainWindow的菜单栏中,点击菜单选项,弹出一个QDialog对话框,可输入文本,输入文本完成之后,点击对话框的确定按钮,输入的文本将显示到主界面QMainWindow上。
我们一步一步来完成这个任务:
一、主界面QMainWindow的设置
如上图所示,本次实验我们主要用到其中的菜单栏和四个标签中的一个标签作为显示。 若点击菜单栏中的“rotate”选项,会弹出子菜单“choose a angle”,点击该子菜单将会弹出对话框。
关键代码:
//菜单栏的设置e);
其余的布局等知识点请详见上篇博。
伦理片 http://www.dotdy.com/
二、子窗体QDialog的设置 子窗体样式如下:
设置方法如下:
在QMainWindow的基础下 ,依葫芦画瓢创建一个.h头文件和.cpp源文件,注意,名字应该相同为好!如下图举例所示:
EditRotate.h
#include <QtWidgets/QDialog>
#include <QHBoxLayout>
#include <QTextEdit>
#include <QtWidgets/Qlabel>
#include <QtWidgets/qpushbutton.h>
class EditRotate : public QDialog
{
Q_OBJECT
public:
EditRotate(QWidget *parent = 0);
~EditRotate();
//定义控件
QLabel* label;
QTextEdit* edit;
QPushButton* btn;
signals:
void sendData(QString);
public slots:
void clickOk();
};
注意:这里原本有跟Ui有关的私有成员,这里我删去了,这个东西是跟ui界面设计有关,也就是QT设计师设计有关,我们这里使用代码就不用QT设计师了。
EditRotate.cpp
EditRotate::EditRotate(QWidget *parent)
: QDialog(parent)
{
this->setWindowModality(Qt::ApplicationModal);
//ui.setupUi(this);
this->setFixedSize(160, 50);
this->setWindowTitle("Rotate");
//初始化控件
label = new QLabel("Angel: ", this);
edit = new QTextEdit(this);
edit->resize(30, 10);
btn = new QPushButton("Ok", this);
//开始布局
QHBoxLayout* hl = new QHBoxLayout(this);
hl->addWidget(label);
hl->addWidget(edit);
hl->addWidget(btn);
this->setLayout(hl);
//信号和槽函数连接
connect(btn, SIGNAL(clicked()), this, SLOT(clickOk()));
}
注:这里继承的是QDialog类。
三、主窗体和子窗体的信息传递(子->主)
这是本文讲述的重点。具体实现方法见下:
1.在子窗口类声明信号-----sendData(QString)
声明槽函数----clickOK()
EditRotate.h
signals:
void sendData(QString); //只用声明不用定义
public slots:
void clickOk();//需要定义,点击按钮的槽函数
2.定义clickOK槽函数---发射数据
EditRotate.cpp
void EditRotate::clickOk()
{
QString str = edit->toPlainText();
emit sendData(str);//使用emit关键词,发射数据
}
3.主窗体类声明槽函数
SimilarProject.h
public slots:
void clickRotateMenu();//点击菜单,子窗体生成
void receiveData(QString data);//接受数据
4.主窗体槽函数定义
SimilarProject.cpp
void SimilarProject::clickRotateMenu()
{
//初始化窗体
e->show();
}
void SimilarProject::receiveData(QString data)
{
imgLab3->setText(data);
}
相关文章推荐
- Ubuntu14.04 安装Qt5.2.1
- qt_简易记事本_5
- Qt - 正确判断文件、文件夹是否存在的方法
- QT中PRO文件写法的详细介绍
- qt_简易记事本_4
- Qt的Window Close与程序退出
- QT开发
- PyQt5教程(三)——布局管理
- win10下qt 中没有代码提示框了怎么办?
- Qt中MainWindow类实例
- Qt 创建工具栏
- Ubuntu下搭建Qt+OpenCV开发环境
- Qt中常用的对话框总结QDialog
- qt_简易记事本_3
- Qt 创建菜单
- Qt Creator在windows平台下显示中文问题
- qt_简易记事本_2
- qt_简易记事本_1
- Qt从零开始制作串口调试助手-(第十二章、串口数据发送)-Creator_Ly
- Qt从零开始制作串口调试助手-(第十一章、数据校验码生成功能)-Creator_Ly