关于 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安装失败解决方法
78 2
|
Java Maven
【异常】记录“错误: 找不到或无法加载主类 com.iotsoft.back.iotauthority.ApplicationRun”的解决方案
【异常】记录“错误: 找不到或无法加载主类 com.iotsoft.back.iotauthority.ApplicationRun”的解决方案
78 0
QT编译警告 warning LNK4042: 对象被多次指定;已忽略多余的指定
QT编译警告 warning LNK4042: 对象被多次指定;已忽略多余的指定
309 0
popupwindow showAsDropDown 无效解决方法
popupwindow showAsDropDown 无效解决方法
popupwindow showAsDropDown 无效解决方法
|
存储 缓存 小程序
小程序的thirdScriptError ..... is not a function 报错的解决方法
小程序的thirdScriptError ..... is not a function 报错的解决方法
497 0
|
编译器 开发工具 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为域账号的作业执行会报错...
1348 0
WebBrowser 的 DocumentCompleted事件不执行的解决方法
原文:WebBrowser 的 DocumentCompleted事件不执行的解决方法 WebBrowser 的 DocumentCompleted事件不执行的解决方法: 使用WebBrowser的ProgressChanged事件,在时间中判断((WebBrowser)sender).ReadyState == WebBrowserReadyState.Complete是否成立,若成立则执行DocumentCompleted的处理。
1537 0

热门文章

最新文章