如何交换"取消"和"好的" QInputDialog小部件上的按钮?

时间:2015-04-07 06:29:10

标签: qt qt5

以下代码显示输入对话框,左侧是“取消”按钮,右侧是“确定”按钮。如何交换按钮的位置?

QInputDialog::getText(this, QString("Email"), QString("Enter email address:"), QLineEdit::Normal, QString(""), &ok, 0);

1 个答案:

答案 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);
}