找回密码
 立即注册
收起左侧

自定义了MyDialog,有确认和取消按钮,怎么在其他的类调用

4
回复
238
查看
[复制链接]
累计签到:87 天
连续签到:1 天
来源: 2019-9-11 11:58:29 显示全部楼层 |阅读模式
1Qter豆
本帖最后由 Sehin_春子 于 2019-9-11 11:57 编辑

如图,我自己写了提示的弹框,在MyDialog写了确定和取消的信号槽 ,不知道对不对。但是不知道在main类怎么调用。
想要实现的效果是调用外部的弹框,按确定就把数获取  ,按取消就不获取。求大神帮帮我,最好能详细些,我逻辑能力比较差。超级感谢了。                 
   
附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

比如要在mainwindow 下点击一个按钮,弹出你自己定义的MyDialog. 首先mainwindow头文件下包含MyDialog的头文件(部分代码) #include "MyDialog.h" class MyDialog; class MainWindow :public QMainWindow { Q_OBJECT ..... privata slots: void onBtnClicked(); ..... }; .cpp 文件: MainWindow::MainWindow(QMainWindow *parent) : QMainWindow(parent), ui(new Ui::mainwindow) { ui->setu ...
回复

使用道具 举报

累计签到:87 天
连续签到:1 天
2019-10-30 11:18:01 显示全部楼层
本帖最后由 Sehin_春子 于 2019-10-30 11:20 编辑

结贴来咯!
第一步:在MyDialog的设计师里点击按钮,右击转到槽,选择clicked(),系统会自动添加槽函数。
在确定那个按钮的槽函数里写accept();取消那个槽函数里写reject();就可以达到目的了。
还有一种比较笨的方法就是,在MyDialog对确定和取消按钮写信号槽,(信号槽里只添加accept();  或者 reject();)在其他窗口new这个dialog的时候就会生效。
void MyDialog:n_doneButton_clicked()
{
    accept();
}

void MyDialog:n_cancelButton_clicked()
{
    reject();
}
二步:在窗口调用
   MyDialog mdialog;  //实例一个mdialog
   int reg = mdialog.exec();  //让弹框执行
   if(reg == QDialog::Accepted){   //调用系统的方法 并判断是确认还是取消
          qDebug() << "你选择了确定!";
         // 做确定后的事
   }
   if(reg == QDialog::Rejected){
            qDebug() << "你选择了取消!";
         // 做取消后的事
   }
回复

使用道具 举报

累计签到:118 天
连续签到:2 天
2019-9-11 11:58:30 显示全部楼层
比如要在mainwindow 下点击一个按钮,弹出你自己定义的MyDialog.
首先mainwindow头文件下包含MyDialog的头文件(部分代码)
#include "MyDialog.h"

class MyDialog;

class MainWindow :public QMainWindow
{
   Q_OBJECT
.....

privata slots:
           void onBtnClicked();
.....
};

.cpp 文件:

MainWindow::MainWindow(QMainWindow *parent)
     : QMainWindow(parent),
     ui(new Ui::mainwindow)
{
     ui->setupUi(this);
     connect(ui->pushButton,&QPushButton::clicked,this,&Mainwindow:nBtnClicked);   
}

void MainWindow:nBtnClicked()
{
     MyQidlog *dialog;
     dialog = new MyQdialog();
     //这里可以关联些信号槽
     dialog->exec();
}

嗯,就这些了,基本实现你要的效果。
回复

使用道具 举报

累计签到:87 天
连续签到:1 天
2019-9-12 20:33:34 显示全部楼层
zhuxianfei 发表于 2019-9-12 10:10
比如要在mainwindow 下点击一个按钮,弹出你自己定义的MyDialog.
首先mainwindow头文件下包含MyDialog的头 ...

谢谢你,你这个是实现点击按钮就弹框,我现在已经弹出了带两个按钮的提示框了。需要实现的是按下“确定”就做这件事,按下“取消”就不做。我就是不知道怎么写代码识别是按下确定还是取消,主要这按钮是ui拖拽出来的,不是代码写的,我不会访问。今天参照一些例子实现了,等明天有空整理好再贴出来看看。
回复

使用道具 举报

累计签到:87 天
连续签到:1 天
2019-10-30 09:40:38 显示全部楼层
结贴来咯!在设计师里点击按钮,右击转到槽,选择clicked(),系统会自动添加槽函数。
在确定那个按钮的槽函数里写accept();取消那个槽函数里写reject();就可以达到目的了。
还有一种比较笨的方法就是,在小dialog对确定和取消按钮写信号槽,(信号槽里只添加accept();  或者 reject();)在其他窗口new这个dialog的时候就会生效
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册