gpt4 book ai didi

c++ - QMessageBox 不显示整个标题

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:38:49 25 4
gpt4 key购买 nike

#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();
}

enter image description here

这两种方法都会产生此消息框,其中标题未正确显示。我试图调整对话框小部件的大小,但没有帮助。如何强制 QMessageBox 显示整个标题?

作为解决方法,我可以在标题文本中添加尾随空格,但我认为应该有更好的解决方案。

aminasya@aminasya-desktop:~/qt$ qmake --version
QMake version 2.01a
Using Qt version 4.8.6 in /usr/lib/x86_64-linux-gnu

最佳答案

我尝试使用 qmessagebox.cpp 中提到的 qt help 构造函数创建 QMessageBox,但它对我也不起作用。出于某种原因,QMessageBox 调整大小以适应窗口标题不起作用。但是,您可以通过创建自己的 QMessageBox 子类来调整 MessageBox 的大小。

请看下面的例子;

class MyMessageBox : public QMessageBox
{
public:
explicit MyMessageBox(QWidget *parent = 0) : QMessageBox(parent) { }
MyMessageBox(const QString &title, const QString &text, Icon icon,
int button0, int button1, int button2,
QWidget *parent = 0,
Qt::WindowFlags f = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint) :
QMessageBox(title, text, icon, button0, button1, button2, parent, f) { }


static void about(QString title, QString text)
{
MyMessageBox aboutBox(title, text, QMessageBox::Information, 0, 0, 0, NULL);

aboutBox.setText(title);
aboutBox.setText(text);
QIcon icon = aboutBox.windowIcon();
QSize size = icon.actualSize(QSize(64, 64));
aboutBox.setIconPixmap(icon.pixmap(size));

aboutBox.exec();
}

void showEvent(QShowEvent *event)
{
QMessageBox::showEvent(event);
QWidget *textField = findChild<QWidget *>("qt_msgbox_label");
if (textField != NULL)
{
// getting what ever my system has set for the window title font
QFont font = QFont("Ubuntu Bold", 11);
// you might want to make it more generic by detecting the actuall font
// or using smth like this:
//QFont font = QApplication::font("QWorkspaceTitleBar");

QFontMetrics fm(font);
int width = qMax(fm.width(windowTitle()) + 50, textField->minimumWidth());
textField->setMinimumWidth(width);
}
}
};

关于c++ - QMessageBox 不显示整个标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31379688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com