QMessageBox 调整大小

博客探讨了在Qt中使用QMessageBox设置基础尺寸的方法,发现使用setBaseSize和setFixedSize API并未生效,而CSS样式却有效。作者寻求解答为何API失效并对比了两者在调整对话框大小上的区别。
摘要由CSDN通过智能技术生成

一.查询Qt手册发现,QMessageBox有

1.setBaseSize(int , int )/setBaseSize(const QSize &)

2.setFixedSize(int , int )/setFixedSize(const QSize &)

 msgBox=QMessageBox()
 msgBox.setBaseSize(200,200)
 #msgBox.setBaseSize(QSize(200,200))
 msgBox.setFixedSize(200,200)
 #msgBox.setFixedSize(QSize(200,200))

然而并没有效果…

二.运用Qt css

msgBox=QMessageBox()
 msgBox.setStyleSheet("QLabel{"
                      "min-width: 200px;"
                      "min-height: 100px; "
                      "}")

发现有效果,但不知上面的函数为何不可用,望大佬指点迷津.

要设置QMessageBox大小,可以使用以下方法之一: 方法一:通过样式表设置大小 使用样式表可以设置QMessageBox大小。首先,创建一个QMessageBox对象,然后使用setStyleSheet方法在样式表中设置最小宽度和最小高度。例如: ```cpp QMessageBox box; box.setStyleSheet("QLabel{" "min-width:100px;" "min-height:40px; " "font-size:16px;" "}"); box.setText("请先登陆"); box.setWindowTitle("警告"); box.setIcon(QMessageBox::Icon::Warning ); box.setButtonText(QMessageBox::Ok , "确定"); box.exec(); ``` 上述代码中,通过设置最小宽度为100px,最小高度为40px来改变QMessageBox大小。 方法二:自定义QMessageBox子类 可以创建一个自定义的QMessageBox子类,并重写showEvent方法来改变QMessageBox大小。首先,创建一个继承自QMessageBox的子类,然后在构造函数中调用父类的构造函数,并设置窗口标志为Qt::MSWindowsFixedSizeDialogHint以禁止调整窗口大小。在showEvent方法中,找到QLabel控件并设置其最大高度。以下是示例代码: ```cpp class MyMessageBox : public QMessageBox { public: explicit MyMessageBox(QWidget *parent = Q_NULLPTR) : QMessageBox(parent) {;} MyMessageBox(Icon icon, const QString &title, const QString &text, StandardButtons buttons = NoButton, QWidget *parent = Q_NULLPTR, Qt::WindowFlags flags = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint) : QMessageBox(icon, title, text, buttons, parent, flags) {;} protected: void showEvent(QShowEvent* event) { QMessageBox::showEvent(event); QWidget *textField = findChild<QWidget*>("qt_msgbox_label"); if(textField != NULL) { textField->setMaximumHeight(720); } QMessageBox::showEvent(event); } }; ``` 上述代码中,通过重写showEvent方法,在显示QMessageBox之前找到名为"qt_msgbox_label"的QLabel控件,并设置其最大高度为720。 综上所述,你可以通过设置样式表或者自定义QMessageBox子类的方式来改变QMessageBox大小
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值