qt 多个QInputDialog
时间: 2023-07-12 10:13:18 浏览: 60
可以使用不同的标识符(ID)来区分多个QInputDialog。例如,使用以下代码创建两个QInputDialog:
```
QString text1 = QInputDialog::getText(this, tr("Input Dialog 1"), tr("Enter some text:"));
QString text2 = QInputDialog::getText(this, tr("Input Dialog 2"), tr("Enter some text:"));
```
在这里,我们使用了不同的窗口标题来标识两个不同的QInputDialog。您还可以使用其他标识符,例如存储在变量中的字符串或数字,以便轻松区分多个对话框。
相关问题
qt 同一个窗口多个QInputDialog
如果要在同一个窗口中创建多个QInputDialog,可以使用QDialog类来创建自定义的输入对话框。您可以为每个对话框创建一个单独的QDialog,并在需要时显示它们。
以下是一个简单的示例,演示如何创建两个自定义输入对话框并在同一个窗口中显示它们:
```
#include <QDialog>
#include <QLineEdit>
#include <QLabel>
#include <QVBoxLayout>
#include <QPushButton>
class InputDialog : public QDialog
{
Q_OBJECT
public:
explicit InputDialog(const QString& title, const QString& label, QWidget *parent = nullptr)
: QDialog(parent)
{
setWindowTitle(title);
QLabel* inputLabel = new QLabel(label, this);
m_input = new QLineEdit(this);
QVBoxLayout* layout = new QVBoxLayout(this);
layout->addWidget(inputLabel);
layout->addWidget(m_input);
QPushButton* okButton = new QPushButton(tr("OK"), this);
connect(okButton, &QPushButton::clicked, this, &QDialog::accept);
layout->addWidget(okButton);
}
QString text() const
{
return m_input->text();
}
private:
QLineEdit* m_input;
};
void MyWidget::showInputDialogs()
{
InputDialog dialog1(tr("Input Dialog 1"), tr("Enter some text:"), this);
InputDialog dialog2(tr("Input Dialog 2"), tr("Enter some text:"), this);
if (dialog1.exec() == QDialog::Accepted) {
QString text1 = dialog1.text();
// do something with text1
}
if (dialog2.exec() == QDialog::Accepted) {
QString text2 = dialog2.text();
// do something with text2
}
}
```
在这个例子中,我们创建了一个名为InputDialog的自定义对话框类,它包含一个标签和一个文本框以用于输入。我们在MyWidget类中创建了两个InputDialog实例,并在需要时显示它们。在用户关闭对话框时,我们可以使用text()函数来检索输入的文本。
qt5.15.2 QInputDialog崩溃
我了解到您遇到了Qt5.15.2中QInputDialog崩溃的问题。QInputDialog是Qt提供的一个用于用户输入对话框的类,但它可能会在某些情况下导致崩溃。常见的导致崩溃的原因是传递给QInputDialog的参数不正确或者内存错误。为了解决这个问题,您可以尝试以下几个方法:
1. 确保您传递给QInputDialog的参数是正确的。例如,如果您使用的是QInputDialog::getText()函数来获取用户输入的文本,确保您正确设置了对话框的标题、标签和默认文本。
2. 检查您的代码是否存在内存错误。使用Qt的内存调试工具可以帮助您找到潜在的内存问题,并修复它们。
3. 尝试更新Qt版本或者重新编译Qt库。某些Qt版本可能存在已知的bug,在新的Qt版本中可能已经修复了这些问题。
如果以上方法不能解决您的问题,我建议您在Qt的官方论坛或者社区中提问,以获取更多的帮助和支持。他们的开发人员和其他用户可能能够给您提供更具体的解决方案。