gpt4 book ai didi

qt - QButtonBox设置默认按钮

转载 作者:行者123 更新时间:2023-12-03 00:58:42 32 4
gpt4 key购买 nike

在Qt 5.3下,QButtonBox的默认按钮是Cancel,我想将其设置为Ok,但我找不到实现它的方法。我已经尝试过这个:

QPushButton * b = ui->buttonBox->button(QDialogButtonBox::Ok);
b->setDefault(true);

但没有成功,它会抛出:

/Users/thomas/Dev/Joker/app/Joker/RulerSpaceDialog.cpp:18:3: error: member access into incomplete type 'QPushButton'
b->setDefault(true);
^
/Applications/Qt/5.3/clang_64/lib/QtWidgets.framework/Versions/5/Headers/qdialog.h:50:7: note: forward declaration of 'QPushButton'
class QPushButton;
^
1 error generated.

我也尝试浏览列表,但没有成功......

编辑:

我添加了包含来获取该代码:

QPushButton * b = ui->buttonBox->button(QDialogButtonBox::Ok);
if(b)
{
b->setDefault(true);
qDebug() << b->text();
}

输出Ok等待2秒,然后突出显示Cancel按钮...

最佳答案

确保设置 auto default false 同样,使用 setAutoDefault(false) 以及 setDefault(false)

下面的示例代码。

#include <QtWidgets>

int main(int argc, char** argv)
{
QApplication app(argc, argv);

QDialogButtonBox* bb = new QDialogButtonBox(
QDialogButtonBox::Ok | QDialogButtonBox::Cancel);

QPushButton* okBtn = bb->button(QDialogButtonBox::Ok);
okBtn->setAutoDefault(true);
okBtn->setDefault(true);

QPushButton* caBtn = bb->button(QDialogButtonBox::Cancel);
caBtn->setAutoDefault(false);
caBtn->setDefault(false);

QDialog dlg;
QVBoxLayout* dlgLayout = new QVBoxLayout();
dlgLayout->addWidget(bb);
dlg.setLayout(dlgLayout);
dlg.show();
return app.exec();
}

当我在 Windows 上测试此功能时,默认情况下“确定”按钮是默认按钮,但我可以通过更改对 setAutoDefaultsetDefault 的调用,将其替换为取消按钮>.

关于qt - QButtonBox设置默认按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24556831/

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