gpt4 book ai didi

c++ - 在消息框内有一个组合框

转载 作者:行者123 更新时间:2023-11-30 05:19:57 25 4
gpt4 key购买 nike

我想在消息框内创建一个组合框并返回选定的值以供稍后使用。

我可以在窗口本身上执行相同的操作,但不确定如何在组合框中执行此操作。

    MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->comboBox->addItem("Red");
ui->comboBox->addItem("Blue");
ui->comboBox->addItem("Green");
ui->comboBox->addItem("Yellow");
ui->comboBox->addItem("Pink");
ui->comboBox->addItem("Purple");
}

MainWindow::~MainWindow()
{
delete ui;
}

void MainWindow::on_pushButton_clicked()
{
QMessageBox::about(this,"Choose color of rectangle", ui->comboBox->currentText() );
}

最佳答案

如果我理解你更正,你想在一个单独的对话框窗口中显示一个组合框,供用户选择一些选项。

其中一种方法是子类化 QDialog。如果组合字段和接受按钮就足够了,则该类可能如下所示:

class CustomDialog : public QDialog
{
public:
CustomDialog(const QStringList& items)
{
setLayout(new QHBoxLayout());

box = new QComboBox;
box->addItems(items);
layout()->addWidget(box);

QPushButton* ok = new QPushButton("ok");
layout()->addWidget(ok);
connect(ok, &QPushButton::clicked, this, [this]()
{
accept();
});
}

QComboBox* comboBox() { return box; }

private:
QComboBox* box;
};

要使用类对象,您可以调用 exec 以模态方式显示它。然后您可以通过按 ok 按钮验证用户是否接受了选择并采取适当的操作。

QStringList itemList({"item1", "item2", "item3"});
CustomDialog dialog(itemList);
if (dialog.exec() == QDialog::Accepted)
{
// take proper action here
qDebug() << dialog.comboBox()->currentText();
}

QMessageBox 类中实现了类似的方法,其中可以指定许多选项来改变显示的内容(例如按钮配置或复选框存在)。

编辑:要在您自己的项目中使用示例代码,您应该将我发布的后一部分放入您的 on_pushButton_clicked() 插槽中。用您的颜色名称列表替换 itemList。然后将 CustomDialog 类放入一个单独的文件中,您将其包含在 main 中,这样就可以了。

关于c++ - 在消息框内有一个组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40919414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com