以下代码显示输入对话框,左侧是“取消”按钮,右侧是“确定”按钮。如何交换按钮的位置?
QInputDialog::getText(this, QString("Email"), QString("Enter email address:"), QLineEdit::Normal, QString(""), &ok, 0);
答案 0 :(得分:5)
当谈到按钮顺序时,Qt遵循它运行的环境的惯例,即Windows,KDE等上的Ok / Cancel,OS X,Gnome等上的Cancel / OK。这通常是一个好的事情,不应该用平台默认值以外的按钮顺序给用户带来惊喜。
但是,如果你有充分的理由覆盖平台默认值(我想不出任何问题),或者如果你是在没有平台默认值的嵌入式平台上,您需要覆盖使用的QStyle定义的内容。
实施您自己的proxy style,覆盖为QStyle::SH_DialogButtonLayout返回的值:
int ProxyStyle::styleHint(StyleHint hint, const QStyleOption * option = 0, const QWidget * widget = 0, QStyleHintReturn * returnData = 0) const override {
if (hint == SH_DialogButtonLayout) {
return QDialogButtonBox::WinLayout;
}
return baseStyle()->styleHint(hint, option, widget, returnData);
}