关于 QMessageBox定制大小重写showEvent失败的 解决方法
程序员文章站
2022-06-01 13:41:22
...
需求
对QMessageBox进行尺寸定制。
截图,定制前
截图,定制后
原因
原因: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);
}
上一篇: vant定制主题
下一篇: jvm中的变量分类-类加载