我如何使用 QDialogbox 上的确定和取消按钮
Posted
技术标签:
【中文标题】我如何使用 QDialogbox 上的确定和取消按钮【英文标题】:How do i use okay and cancel buttons on QDialogbox 【发布时间】:2020-06-25 18:45:55 【问题描述】:我有一个名为 "WinApp" 的 QDialog 框,它看起来像这样
所以,当我点击确定时,在两个 lineedits 中输入的值必须分配给两个 QStrings,我该如何实现呢?因为到目前为止,即使我单击“取消”,这些值仍然被分配给 QStrings。
但如果我单击取消,则输入的值不应分配给 QStrings。
如果需要,我的 WinApp.h 的代码是
#include <QtWidgets/qdialog.h>
#include "ui_WinApp.h"
class WinApp : public QDialog, public Ui::WinApp
Q_OBJECT
public:
WinApp(QWidget *parent = Q_NULLPTR);
~WinApp();
QString getDialogueValue();
private slots:
private:
Ui::WinApp ui;
;
我的 WinApp.cpp 的代码是
#include "WinApp.h"
WinApp::WinApp(QWidget *parent)
: QDialog(parent)
ui.setupUi(this);
WinApp::~WinApp()
QString WinApp::getDialogueValue()
return ui.lineEdit->text();
更新:
这是 Mainwindow.cpp 的代码
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtCore>
#include <QtGui>
#include <sstream>
#include <QtWidgets/qmessagebox.h>
#include <QtWidgets/qlistwidget.h>
using namespace std;
MainWindow::MainWindow(QWidget* parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
ui->My_listwidget->addItem("New York");
ui->My_listwidget->addItem("Glasgow");
ui->My_listwidget->addItem("Mumbai");
MainWindow::~MainWindow()
delete ui;
void MainWindow::on_My_listwidget_itemDoubleClicked(QListWidgetItem* item)
QString test = item->text();
std::string test_s = test.toStdString();
if (test_s.find("New York") != std::string::npos) // check if item contains text "New York"
WinApp winApp;
winApp.setModal(true); //Displaying the window here
winApp.exec();
QString testo =winApp.getDialogueValue(); // Getting the value from 1st line edit here from getter function and assignment is happening here.
item->setText(testo);
item->setData(CapitalRole, testo);
if (test_s.find("Glasgow") != std::string::npos)
// show another dialog box asking some questions
if (test_s.find("Mumbai") != std::string::npos)
// show another dialog box asking some questions
【问题讨论】:
缺少一些重要的代码,例如我们看不到getDialogueValue()
的调用位置和方式
哦,对不起,它是在主窗口的一个函数中调用的,我会更新我原来的问题
【参考方案1】:
关闭对话框后,您可以获得其结果(即用户单击的按钮的值)。像这样的:
WinApp dialog;
dialog.exec();
if (dialog.result() == QDialog::Accepted)
yourString = dialog.getDialogueValue();
来自 Qt 文档:https://doc.qt.io/qt-5/qdialog.html#result
通常返回模态对话框的结果代码,Accepted 或 Rejected。
【讨论】:
以上是关于我如何使用 QDialogbox 上的确定和取消按钮的主要内容,如果未能解决你的问题,请参考以下文章
Android 点击AlertDialog上的确定和取消按钮,使对话框不消失方法
请问在AlertDialog中如何再此嵌入AlertDialog