我想QDialogButtonBox按照这个特定的顺序有三个按钮:
Ok | Apply | Cancel
Run Code Online (Sandbox Code Playgroud)
是否可以重新排序按钮以放入Apply中心?
按钮布局是特定于平台的.
Windows - Ok | Cancel | Apply
OS X - Apply | Cancel | Ok
KDE - Ok | Apply | Cancel
GNOME - Apply | Cancel | Ok
Run Code Online (Sandbox Code Playgroud)
强制使用非标准布局有两种方法.
您可以子类化QProxyStyle并重新实现styleHint方法,为QStyle::SH_DialogButtonLayoutstyleHint 提供自定义样式.
class KdeStyle : public QProxyStyle
{
public:
virtual int styleHint(StyleHint stylehint, const QStyleOption *opt, const QWidget *widget, QStyleHintReturn *returnData) const override
{
if (stylehint == SH_DialogButtonLayout)
return QDialogButtonBox::KdeLayout;
return QProxyStyle::styleHint(stylehint, opt, widget, returnData);
}
};
Run Code Online (Sandbox Code Playgroud)
然后将自定义样式应用于应用程
qApp->setStyle(new KdeStyle());
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用样式表.button-layout属性指定a QDialogButtonBox或a 中按钮的布局QMessageBox.可能的值为0(WinLayout),1(MacLayout),2(KdeLayout)和3(GnomeLayout).
QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Apply | QDialogButtonBox::Cancel);
buttonBox->setStyleSheet("* { button-layout: 2 }");
Run Code Online (Sandbox Code Playgroud)