关于 QMessageBox定制大小重写showEvent失败的 解决方法

简介: 关于 QMessageBox定制大小重写showEvent失败的 解决方法

需求

       对QMessageBox进行尺寸定制。


截图,定制前

图片.png

截图,定制后

图片.png

   

原因

       原因:QMessageBox::showEvent() 强制将其大小改变成了QT认为比较合适的大小。

       要改变它的大小可使用下面这种方法:

class MyMessageBox : public QMessageBox
{  ...
protected:
   void showEvent(QShowEvent* event)
  {
     QMessageBox::showEvent(event);
     setFixedSize(640, 480);
   }
};

       实际检验无效,重载resizeEvent才有效果,重载的代码如下:

mymessagebox.h

#ifndef MYMESSAGEBOX_H
#define MYMESSAGEBOX_H
#include <QWidget>
#include <QMessageBox>
#include <QResizeEvent>
class MyMessageBox : public QMessageBox
{
    Q_OBJECT
public:
    explicit MyMessageBox(QWidget *parent = 0);
    void setMySize(int width, int height);
signals:
public slots:
protected:
    void resizeEvent(QResizeEvent *event);
private:
    int _width;
    int _height;
};
#endif // MYMESSAGEBOX_H

mymessagebox.cpp

#include "mymessagebox.h"
MyMessageBox::MyMessageBox(QWidget *parent) :
    QMessageBox(parent),
    _width(0),
    _height(0)
{
}
void MyMessageBox::setMySize(int width, int height)
{
    _width = width;
    _height = height;
}
void MyMessageBox::resizeEvent(QResizeEvent *event)
{
    setFixedSize(_width, _height);
}


相关文章
|
2月前
|
开发框架 .NET
阅读器关闭时尝试调用Read无效时的解决方法
阅读器关闭时尝试调用Read无效时的解决方法
18 0
|
6月前
|
Python
pyqt 重写关闭窗口事件代码
pyqt 重写关闭窗口事件代码
39 0
|
11月前
QT编译警告 warning LNK4042: 对象被多次指定;已忽略多余的指定
QT编译警告 warning LNK4042: 对象被多次指定;已忽略多余的指定
147 0
关于 QLineEdit设置QDoubleValidator设置范围无效问题 的解决方法
关于 QLineEdit设置QDoubleValidator设置范围无效问题 的解决方法
popupwindow showAsDropDown 无效解决方法
popupwindow showAsDropDown 无效解决方法
popupwindow showAsDropDown 无效解决方法
|
编译器 开发工具 Windows
Qt使用过程中,遇到error及解决方法总结
Qt使用过程中,遇到error及解决方法总结
|
SQL Windows
在执行xp_cmdshell的过程中出错,调用'LogonUserW'失败,错误代码:'1909'
在上篇文章Could not obtain information about Windows NT group/user 'xxxx\xxxx', error code 0x5里面,我介绍了SQL Server服务启动账号域账号锁定的情况下,有些Job Owner为域账号的作业执行会报错...
1299 0