当您打开设置了详细文本的QMessageBox时,它具有显示详细信息按钮。我希望默认显示详细信息,而不是用户必须先单击“显示详细信息...”按钮。

qt - QMessageBox  "show details"-LMLPHP

最佳答案

据快速浏览the source所知,没有简单的方法可以直接打开详细信息文本,也不能直接访问“显示详细信息...”按钮。我能找到的最好方法是:

  • 遍历消息框上的所有按钮。
  • 提取角色为ActionRole的那个,因为它对应于“显示详细信息...”按钮。
  • 对此手动调用click方法。

  • 此操作的代码示例:
    #include <QAbstractButton>
    #include <QApplication>
    #include <QMessageBox>
    
    int main(int argc, char *argv[]) {
        QApplication app(argc, argv);
    
        QMessageBox messageBox;
        messageBox.setText("Some text");
        messageBox.setDetailedText("More details go here");
    
        // Loop through all buttons, looking for one with the "ActionRole" button
        // role. This is the "Show Details..." button.
        QAbstractButton *detailsButton = NULL;
    
        foreach (QAbstractButton *button, messageBox.buttons()) {
            if (messageBox.buttonRole(button) == QMessageBox::ActionRole) {
                detailsButton = button;
                break;
            }
        }
    
        // If we have found the details button, then click it to expand the
        // details area.
        if (detailsButton) {
            detailsButton->click();
        }
    
        // Show the message box.
        messageBox.exec();
    
        return app.exec();
    }
    

    关于qt - QMessageBox "show details",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36083551/

    10-12 05:07