关于 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);
}


相关文章
|
5月前
|
iOS开发 MacOS
CocoaPods安装失败解决方法
CocoaPods安装失败解决方法
79 2
|
数据库
学生错误‘3704‘解决方法
学生错误‘3704‘解决方法
|
Java Maven
【异常】记录“错误: 找不到或无法加载主类 com.iotsoft.back.iotauthority.ApplicationRun”的解决方案
【异常】记录“错误: 找不到或无法加载主类 com.iotsoft.back.iotauthority.ApplicationRun”的解决方案
78 0
setSupportActionBar()方法报错
今天在使用Tollbar替换标题栏时,出现了这样的错误
79 0
setSupportActionBar()方法报错
popupwindow showAsDropDown 无效解决方法
popupwindow showAsDropDown 无效解决方法
popupwindow showAsDropDown 无效解决方法
|
存储 缓存 小程序
小程序的thirdScriptError ..... is not a function 报错的解决方法
小程序的thirdScriptError ..... is not a function 报错的解决方法
497 0
WebBrowser 的 DocumentCompleted事件不执行的解决方法
原文:WebBrowser 的 DocumentCompleted事件不执行的解决方法 WebBrowser 的 DocumentCompleted事件不执行的解决方法: 使用WebBrowser的ProgressChanged事件,在时间中判断((WebBrowser)sender).ReadyState == WebBrowserReadyState.Complete是否成立,若成立则执行DocumentCompleted的处理。
1537 0
|
安全 Windows
ToolStripStatusLabel 没有 InvokeRequired 属性的解决办法
ToolStripStatusLabel 没有 InvokeRequired 属性的解决办法 当编写多线程程序时,你希望在线程中修改 Form 窗体上的控件的文本等属性, 但你会得到一个错误:线程间操作无效: 从不是创建控件“xxx”的线程访问它。
1680 0