我创建了一个与全屏应用程序一起运行的程序.我希望我的程序中的QMessageBox显示在全屏运行的应用程序之上.
该平台是Windows 7,我正在使用Qt.
我试过了:
QMessageBox *msgBox = new QMessageBox;
msgBox->setParent(0);
msgBox->setWindowTitle(title);
msgBox->setText(text);
msgBox->setWindowFlags(Qt::WindowStaysOnTopHint);
msgBox->show();
Run Code Online (Sandbox Code Playgroud)
没有运气.任何提示?
#include <QtGui>
int main(int argc, char** argv)
{
QApplication app(argc, argv);
// first
QMessageBox box(0);
box.setText("short text");
box.setWindowTitle("looooooooooooooooong text");
box.setMinimumSize(800, 0);
box.exec();
// second
//QMessageBox::warning(0, "looooooooooooooooong text", "short text");
return app.exec();
}
Run Code Online (Sandbox Code Playgroud)

两种方法都会产生此消息框,其中标题显示不正确。我试图调整对话框窗口小部件的大小没有帮助。如何强制QMessageBox显示整个标题?
作为一种解决方法,我可以在标题文本中添加尾随空格,但我认为应该有更好的解决方案。
aminasya@aminasya-desktop:~/qt$ qmake --version
QMake version 2.01a
Using Qt version 4.8.6 in /usr/lib/x86_64-linux-gnu
Run Code Online (Sandbox Code Playgroud) 我正在制作 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)
这是弹出窗口当前的样子:
有没有办法使文本居中和按钮居中?
我需要自定义QMessageBox。我需要删除框架和标题栏并添加我自己的标题栏和关闭按钮。还需要更换标准按钮,并可能重做框的背景颜色。
是否可以对其进行子类化并实现上述目标?有这方面的例子吗?或者,我应该继承 Dialog 并创建自己的消息框吗?
我试图用 aQComboBox和 a构建一个简单的应用程序QPushButton。这个想法是QComboBox用系统中所有可用字体的列表来填充。当用户选择一种字体并按 时,QPushButton将QMessageBox出现 并显示所选字体。现在该怎么办呢?
我有一个问题对你们中的一些人有明显的答案,但我无法弄清楚.
QMessageBox http://qt-project.org/doc/qt-5/qmessagebox.html有两种显示方式,你要么exec()停止程序执行直到用户关闭消息框,要么show()只显示框(可能是在单独的线程中或以某种方式允许程序在框等待用户时继续).
使用show()后如何删除该框?
此代码立即关闭它,消息框出现纳秒,然后它消失了:
QMessageBox *mb = new QMessageBox(parent);
mb->setWindowTitle(title);
mb->setText(text);
mb->show();
delete mb; // obvious, we delete the mb while it was still waiting for user, no wonder it's gone
Run Code Online (Sandbox Code Playgroud)
这段代码也是这样
QMessageBox mb(parent);
mb.setWindowTitle(title);
mb.setText(text);
mb.show();
// obvious, as we exit the function mb which was allocated on stack gets deleted
Run Code Online (Sandbox Code Playgroud)
此代码也是如此
QMessageBox *mb = new QMessageBox(parent);
mb->setWindowTitle(title);
mb->setText(text);
mb->show();
mb->deleteLater(); // surprisingly this doesn't help either
Run Code Online (Sandbox Code Playgroud)
那么如何正确使用show(),而不必以某种复杂的方式处理它的删除?是否有类似deleteOnClose()功能的东西只会告诉它在用户关闭后自行删除?
我正在使用Qt c ++创建一个ui应用程序。
我有一条error使用QMessageBoxClass 创建的消息:
QMessageBox errorMessage;
errorMessage.critical(0, "Error", "An error has occured !");
errorMessage.setFixedSize(500, 200);
Run Code Online (Sandbox Code Playgroud)
它就像是:
我想更改红色圆圈中的图标和标题。
我将不胜感激任何帮助。
提前致谢。
我已经设置为textFormat,Qt::RichText但该链接仍然无法点击。
QMessageBox msgBox(this);
msgBox.setWindowTitle(QApplication::applicationName()
+ " $VER " + QApplication::applicationVersion());
msgBox.setTextFormat(Qt::RichText); //this is what makes the links clickable
msgBox.setText("<a href=\"google.com\">Google</a>");
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.exec();
Run Code Online (Sandbox Code Playgroud)
有什么解决办法吗?已确认不适用于 Qt 4.7。
我想QMessageBox.Question用于图标.但我想改变标准按钮的文字.我不希望按钮的文本是"是"和"否".我希望他们成为"Evet"和"Iptal".在这里我的代码.
choice = QtGui.QMessageBox.question(self, 'Kaydet!',
'Kaydetmek ?stedi?inize Emin Misiniz?',
QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)
Run Code Online (Sandbox Code Playgroud)