QMessageBox提示;按钮布局

时间:2012-03-26 16:50:12

标签: c++ qt user-interface layout qmessagebox

我是一名学生程序员,使用Qt为我的公司构建GUI界面。我目前正在构建一个读取数据表的读取器表,并根据文件类型对其进行适当分类。 Anywho;当选择某个文件扩展名时,我有一个消息框显示,用于选择此文件中的数据类型。目前,消息框显示从左到右堆叠的所有按钮,看起来有点愚蠢。我希望他们要么从上到下堆叠更好的堆叠2x2。我一直在查看QMessageBox documentation并且似​​乎无法找到执行此操作的方法。我知道一个必须存在似乎我只是需要一些帮助找到它。目前我的这个消息框的鳕鱼看起来像这样;

            QMessageBox templateSelectorWindow;
            QPushButton * pressureBC =templateSelectorWindow.addButton("Pressure Boundry Condition", QMessageBox::AcceptRole);
            QPushButton * flowBC = templateSelectorWindow.addButton("Flow Boundry Condition", QMessageBox::AcceptRole);
            QPushButton * massFlowBC = templateSelectorWindow.addButton("Mass Flow Boundry Condition", QMessageBox::AcceptRole);
            QPushButton * thermalWallBC = templateSelectorWindow.addButton("Thermal Wall Boundry Condition", QMessageBox::AcceptRole);
            QPushButton * cancelButton = overwriteWarning.addButton("Cancel", QMessageBox::RejectRole);
            templateSelectorWindow.setWindowTitle("Input File Type");
            templateSelectorWindow.setText("Input Files Require You Select The Input File Type:");
            templateSelectorWindow.setInformativeText("Please select the the input type from the following");
            templateSelectorWindow.exec();

目前这个窗口看起来像这样: enter image description here

所以知道你可以看到我为什么要在这里更改布局。感谢您阅读我的帖子!在此先感谢您的帮助,您可以为克服这一挑战做出贡献。

2 个答案:

答案 0 :(得分:8)

要实现这一点,您必须创建自己的扩展QDialog的对话框,使用QDialogButtonBox作为按钮布局,并将其作为窗口小部件添加到自定义QDialog中。

使用QmessageBox不允许您更改按钮方向。如果你想要一个2x2的显示器,你需要使用layouts(带有两个QDialogBu​​ttonBox)的组合来玩更多。

答案 1 :(得分:6)

你绝对需要一个QDialog而不是QMessageBox,因为你无法控制QMessageBox的布局。

使用QDialog并使用网格布局,因为您需要2X2的网格,您可以满足解决方案。 最重要的是,您可以获得QMessageBox可以拥有的所有功能。