ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

c-按下QDialog取消或确定后如何调用函数?

2019-10-25 20:52:08  阅读:277  来源: 互联网

标签:qdialog linux c-4 qt


我正在从QDialog做3个标签.然后将2个小部件和1个QDialog添加到3个选项卡.
我称QDialog :: accept和QDialog :: reject.但是我希望调用自定义方法,并且在调用它们时应将对话框屏幕重置为列表框选定的屏幕.我的代码如下:

BTSettingsTab::BTSettingsTab(const QFileInfo &fileInfo, QWidget *parent)
    : QDialog(parent)
{
...........
.............
QLabel *topLabel = new QLabel(tr("Choose setting :"));

    QListWidget *settingsListBox = new QListWidget;
    QStringList settings;

    /*for (int i = 1; i <= 30; ++i)
        applications.append(tr("Application %1").arg(i));
    applicationsListBox->insertItems(0, applications);*/

    settings.append(tr("newConfiguration:"));
    settings.append(tr("Edit Configuration:"));
    settings.append(tr("Delete Configuration:"));
    settings.append(tr("add current location to  turnoff Places:"));
    settings.append(tr("temporarily turnoff distance:"));
    settings.append(tr("temporarily turn off turnoff places:"));
    settings.append(tr("factory reset:"));
    settings.append(tr("turn on distance:"));
    settings.append(tr("turn on turnoff places:"));
    settings.append(tr("exit"));
    settingsListBox->insertItems(0,settings);
QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok
                                             | QDialogButtonBox::Cancel);

            connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
            connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
QVBoxLayout *layout = new QVBoxLayout;
 layout->addWidget(topLabel);
    layout->addWidget(settingsListBox);
layout->addWidget(buttonBox);
    setLayout(layout);
}

我看到了你的帖子.谢谢.我实现了重载函数,并且断点命中了它们.我得到了所选项目的行号.我使用了QString * curr = settingsListBox-> currentItem()-> text();

现在如何启动新窗口?

解决方法:

方法QDialog :: accept和QDialog :: reject是虚拟的,因此可以在您的自定义对话框中覆盖它们(在您的情况下-BTSettingsTab继承自QDialog).

如果要在接受和拒绝上替换行为-只需在重写的方法中实现所需的行为即可.或者,您可以实现自己的方法BTSettingsTab :: __ OnAccept()和_OnReject()并将按钮连接到它们,而不是将它们连接到QDialog :: accept和拒绝.

如果要将自定义行为添加到默认QDialog的行为中,请在重载版本的末尾分别调用QDialog :: accept()和QDialog :: reject.

标签:qdialog,linux,c-4,qt
来源: https://codeday.me/bug/20191025/1931337.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有