标签: qmessagebox

是/否使用QMessageBox的消息框

如何在Qt中显示带有是/否按钮的消息框,如何检查按下哪个按钮?

即一个看起来像这样的消息框:

在此输入图像描述

c++ qt qmessagebox

102
推荐指数
4
解决办法
14万
查看次数

QMessageBox中的HTML

我有一个创建QMessageBox的动作.在该对话框中,我想打印一个包含多个项目的列表.我有以下代码:

void MainWindow::onAboutActivated(){
qDebug() << "about";
QMessageBox::about(this,
                   "Autor: \n"
                   "\n"
                   "Umoznuje:"
                   "<ul>"
                   "<li> Item 1 </li>"
                   "<li> Item 2 </li>"
                   "<li> Item 3 </li>"
                   "</ul>");
Run Code Online (Sandbox Code Playgroud)

但是,这不会打印列表,而是带有html标签的文本.我该如何打印清单?有任何想法吗?

c++ qt qmessagebox

14
推荐指数
1
解决办法
4930
查看次数

如何调整QMessageBox的大小?

我有一个QMessageBox我希望它更大.这是一个简单QMessageBox的两个标准按钮,确定和取消.问题是它对于我的应用程序而言非常小.代码显示如下:

QMessageBox msg;
msg.setText("Whatever");
msg.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
msg.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);

int ret = msg.exec();
switch (ret) {
  case QMessageBox::Ok:
      ui->textEdit->clear();
      break;
  case QMessageBox::Cancel:
      break;}
Run Code Online (Sandbox Code Playgroud)

我尝试了几种方法来增加大小:

msg.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);

msg.setSizePolicy(QSizePolicy::Maximum,QSizePolicy::Maximum);

msg.setFixedHeight(600);
msg.setFixedWidth(600);
Run Code Online (Sandbox Code Playgroud)

我甚至清理并重建,它编译了一切,但没有任何生效...

您对如何"手动"设置QMessageBox大小有任何想法吗?谢谢.

c++ qt qmessagebox

13
推荐指数
2
解决办法
1万
查看次数

自动关闭QMessageBox

我正在构建一个Qt Symbian项目,我想向用户显示应在几秒后自动关闭的通知.我看到诺基亚在他们的ui中使用了很多.

现在我正在使用下面的代码,以便用户可以关闭QMessageBox但我希望它能在1或2秒后自动关闭QMessageBox.我怎么能用Qt做到这一点?

QMessageBox msgBox;
msgBox.setText("Hello!");
msgBox.setIcon(QMessageBox::Information);
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.exec();
Run Code Online (Sandbox Code Playgroud)

qt qmessagebox

8
推荐指数
2
解决办法
2万
查看次数

隐藏QMainWindow的问题:显示QMessageBox后应用程序崩溃

// main.cpp

#include <QApplication>

#include "mainwindow.h"

int main(int argc, char* argv[])
{
    QApplication app(argc, argv);
    MainWindow* window = new MainWindow();
    window->show();
    return app.exec();
}

// mainwindow.cpp

#include <QTimer>
#include <QMessageBox>
#include <iostream>

#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent)
{
    this->setCentralWidget(new QWidget());
}

void MainWindow::mousePressEvent(QMouseEvent* event)
{
    this->hide();
    QTimer* timer = new QTimer();
    timer->setInterval(3*1000);
    timer->start();
    connect(timer, SIGNAL(timeout()), this, SLOT(showMessageBox()));
}

void MainWindow::showMessageBox()
{
    QMessageBox::information(this, "Hello,", "world!", QMessageBox::Ok);
}

MainWindow::~MainWindow()
{
    std::cerr << "Destructor called" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

我点击窗口 - 它隐藏,QMessageBox出现.我单击"确定" - …

c++ qt qt4 qmessagebox qmainwindow

8
推荐指数
1
解决办法
5298
查看次数

如何在另一个线程Qt中显示MessageBox

这是我的代码:

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    testApp w;
    w.show();
    TestClass *test = new TestClass;
    QObject::connect(w.ui.pushButton, SIGNAL(clicked()), test, SLOT(something()));
    return a.exec();
}
Run Code Online (Sandbox Code Playgroud)

TestClass.h

class TestClass: public QObject
{
    Q_OBJECT
    public slots:
        void something()
        {
            TestThread *thread = new TestThread;

            thread -> start();
        }

};
Run Code Online (Sandbox Code Playgroud)

TestThread.h

class TestThread: public QThread
{
    Q_OBJECT
protected:
    void run()
    {
        sleep(1000);
        QMessageBox Msgbox;
        Msgbox.setText("Hello!");
        Msgbox.exec();
    }

};
Run Code Online (Sandbox Code Playgroud)

如果我这样做,我会看到错误

必须在gui线程中创建小部件

我究竟做错了什么?请帮我.我知道我不能在另一个线程中改变gui,但我不知道qt中的构造.

c++ qt multithreading qmessagebox

8
推荐指数
1
解决办法
4161
查看次数

QMessageBox"显示详细信息"

当您QMessageBox使用详细文本集打开时,它具有显示详细信息按钮.我希望默认情况下显示详细信息,而不是用户必须先单击" 显示详细信息..."按钮.

qt_doc_example

qt qmessagebox

7
推荐指数
1
解决办法
2077
查看次数

PyQt5 - 如何向 QMessageBox 添加滚动条

我有一个基于用户输入生成的列表。

我正在尝试在 QMessageBox 中显示此列表。但是,我无法知道这个列表的长度。名单可能很长。

因此,我需要向 QMessageBox 添加滚动条。

有趣的是,我到处寻找,但我还没有找到任何解决方案。

下面是我希望是一个“最小的、完整的和可验证的示例”,当然没有用户输入;我刚刚创建了一个列表作为示例。

我很感激任何建议。

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class W(QWidget):

   def __init__(self):
      super().__init__()

      self.initUi()

   def initUi(self):
      self.btn = QPushButton('Show Message', self)
      self.btn.setGeometry(10, 10, 100, 100)
      self.btn.clicked.connect(self.buttonClicked)
      self.lst = list(range(2000))
      self.show()


   def buttonClicked(self):
      result = QMessageBox(self)
      result.setText('%s' % self.lst)
      result.exec_()

if __name__ == "__main__":
   app = QApplication(sys.argv)
   gui = W()
   sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

python pyqt qmessagebox pyqt5

7
推荐指数
1
解决办法
5197
查看次数

在 QMessageBox 中添加详细文本会禁用关闭 (X) 按钮

我注意到一件有趣的事情 - 如果我向 QMessageBox 添加详细文本(它添加了“显示详细信息...”按钮),然后执行它将显示系统框架的关闭 (X) 按钮已禁用,因此将此窗口标记为不可关闭(右键单击框架 -> 关闭禁用)。

下面是一些示例代码:

QMessageBox box(QMessageBox::Critical, title, text, QMessageBox::Ok);
box.setDetailedText(detailedText); // comment this line to get close button enabled
box.exec();
Run Code Online (Sandbox Code Playgroud)

我什至没有找到在 Qt 中手动执行此操作的方法。有任何想法吗?

谢谢

qt qmessagebox

6
推荐指数
1
解决办法
6389
查看次数

如何在 QMessageBox 小部件中居中文本和按钮

我正在制作 QMessageBox,但无法将弹出窗口中的文本和按钮居中。

这是我的消息框的代码:

def update_msgbox(self):
        self.msg = QMessageBox(self.centralwidget)
        self.msg.setWindowTitle("  Software Update")
        self.msg.setText("A software update is available. \nDo you want to update now?")
        self.msg.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)
        self.msg.setStyleSheet("QLabel{min-width: 200px;}")
        self.msg.exec_()
Run Code Online (Sandbox Code Playgroud)

这是弹出窗口当前的样子:

在此输入图像描述

有没有办法使文本居中和按钮居中?

python pyqt qmessagebox pyqt5

6
推荐指数
1
解决办法
3496
查看次数

标签 统计

qmessagebox ×10

qt ×8

c++ ×5

pyqt ×2

pyqt5 ×2

python ×2

multithreading ×1

qmainwindow ×1

qt4 ×1