Qt 中界面间的执行调用QDialog::Accepted

Qt中界面的简单调用model->show();model的界面就会显示出来,早先用QT开发的时候,这个方法用的比较多,随着后来对程序的需求增多,这个方法已经不太合适 了。

比如说,我要调用一个界面,并且把参数传递过去,介于C++的封装和安全性,是不建议直接调用类中的成员变量或过多的调用成员函数,所以,发现了另一种比较灵活的方法:

实例:在A类中调用B类

1.在A类中定义一个B类的对象,直接调用B类中的成员函数

2.在B类的成员函数中,加入语句:this->exec();B界面就出来了。

3.同过B类函数的参数和返回值,可以实现传递参数和获取返回值

B类中:

bool MessageInfo::setInfo(QString title, QString context, QString pixmap, bool Ok_checked, bool Cancel_checked){

lb_title->setText(title);

lb_context->setText(context);

image->setPixmap(pixmap);

if(!Ok_checked){

okButton->setVisible(false);

}

if(!Cancel_checked){

cancelButton->setVisible(false);

}

if(this->exec()==QDialog::Accepted){

return true;

}

return false;

}

A类中:

MessageInfo messinfo = new MessageInfo(this);

if(messinfo->setInfo(QString("提示"),QString("确定结束在线测量?"),QString(":/image/tishi.png"),true,false))){

.....

}

时间: 2024-12-22 12:50:59

Qt 中界面间的执行调用QDialog::Accepted的相关文章

Qt 中界面类名的修改

Qt 中如果想要使用多个已经写好的界面类,往往会发现界面类的名称要么是“MainWindow”,要么是“Widget”,或者是“Dialog”.那么重名的界面类在一起就会在所难免.或者你想修改界面类的名称.那么一定要切记不可直接修改界面类的名称.否则和容易出错. 正确的解决方法如下: 1.修改.ui文件名称为xxxmainwindow.ui/xxxwidget.ui/xxxdialog.ui :在工程树下右键修改即可.当然也可以为其他名字,总之要清晰明了有个性. 2.修改.h,.cpp名称与.u

弹出新界面,在新界面执行方法后传参给调用界面,再执行调用界面的方法

需求:收费界面如果按照客户名称来检索,且有重名的话,能弹出多个客户来选择 思路:利用jquery和第三方的js库lhgdialog.min.js(我这里是为了快速.方便.美观.不用考虑兼容性),当点击查询时,调用弹出窗体,弹出窗体引用了一个单独的aspx页面,这个aspx页面将列出查询到的数据列表,然后根据选择不通的数据行,将唯一标识再传给调用页面(主页面),最后执行调用页面(主页面)的方法. 界面效果如下: aspx页面: <script src="JS/jquery-1.10.2.mi

Qt中多对多关系类调用

之前一直做C的开发,什么东西都是自己想出来自己实现,很少去找已经实现的类库,最近做一个管理Led灯的程序.用C的思路实现功能简单,但是健壮就遇到了不少问题,想通过数据结构来解决,发现Qt中正好有这种想要的数据结构. 之前是QLinkedList, 后来发现list需要实现operator==类的运算符重载我也不记得了. 采用QMultiMap正好符合我的使用场景,还不用费工夫实现运算符重载,真是省心啊,哈哈. 越来越喜欢面向对象了.

Qt中暂停线程的执行

在线程中定义一个信号量 QMutex pause; 把run()函数中循环执行的部分用信号量pause锁住: void run() { while(1) { pause.lock(); //循环执行的内容,比如视频播放 pause.unlock(); } } 在主线程(UI线程)中,如果想暂停线程执行,就将pause加锁: thread->pause.lock(); //thread是线程指针 如果想继续线程,就将pause解锁: thread->pause.unlock();

Qt中暂停线程的执行(利用QMutex,超级简单明了)

在线程中定义一个信号量: QMutex pause;把run()函数中循环执行的部分用信号量pause锁住: void run() { while(1) { pause.lock(); //循环执行的内容,比如视频播放 pause.unlock(); } } 在主线程(UI线程)中,如果想暂停线程执行,就将pause加锁: thread->pause.lock(); //thread是线程指针如果想继续线程,就将pause解锁:thread->pause.unlock(); http://ww

在ros中使用qt图形界面

在ROS中使用QT界面 在终端可以直接用catkin_create_qt_pkg命令创建带Qt界面的ROS package,再按照前面说的方法导入到Qt即可 这里参考的是qt_createTutorialsQt App Templates (1) 要使用catkin_create_qt_pkg命令需要安装一个包,执行如下命令: $ sudo apt-get install ros-indigo-qt-ros11 这样我就可以使用catkin_create_qt_pkg命令创建一个名为testgu

(转)QT中QWidget、QDialog及QMainWindow的区别

QWidget类是所有用户界面对象的基类. 窗口部件是用户界面的一个基本单元:它从窗口系统接收鼠标.键盘和其它事件,并且在屏幕上绘制自己.每一个窗口部件都是矩形的,并且它们按Z轴顺序排列.一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分. QMainWindow 类提供一个有菜单条.锚接窗口(例如工具条)和一个状态条的主应用程序窗口.主窗口通常用在提供一个大的中央窗口部件(例如文本编辑或者绘制画布)以及周围 菜单.工具条和一个状态条.QMainWindow常常被继承,因为这使得封装

QT中QWidget、QDialog及QMainWindow的区别

QWidget类是所有用户界面对象的基类. 窗口部件是用户界面的一个基本单元:它从窗口系统接收鼠标.键盘和其它事件,并且在屏幕上绘制自己.每一个窗口部件都是矩形的,并且它们按Z轴顺序排列.一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分. QMainWindow 类提供一个有菜单条.锚接窗口(例如工具条)和一个状态条的主应用程序窗口.主窗口通常用在提供一个大的中央窗口部件(例如文本编辑或者绘制画布)以及周围 菜单.工具条和一个状态条.QMainWindow常常被继承,因为这使得封装

【转】QT中QWidget、QDialog及QMainWindow的区别

QWidget类是所有用户界面对象的基类. 窗口部件是用户界面的一个基本单元:它从窗口系统接收鼠标.键盘和其它事件,并且在屏幕上绘制自己.每一个窗口部件都是矩形的,并且它们按Z轴顺序排列.一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分. QMainWindow 类提供一个有菜单条.锚接窗口(例如工具条)和一个状态条的主应用程序窗口.主窗口通常用在提供一个大的中央窗口部件(例如文本编辑或者绘制画布)以及周围 菜单.工具条和一个状态条.QMainWindow常常被继承,因为这使得封装