欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

如何自定义QMessageBox的窗口大小

程序员文章站 2022-07-14 07:52:23
...

如何自定义QMessageBox的窗口大小

1.思路

新创建一个类继承QMessageBox,重载resizeEvent(QResizeEvent*event)函数

2.实现

//============================================
//Brief:    继承QMessageBox实现自定义窗口大小
//Email:    [email protected]
//Date:		
//============================================

#ifndef AUTOMESSAGEBOX_H
#define AUTOMESSAGEBOX_H

#include <QMessageBox>
#include <QWidget>
#include <QResizeEvent>

class CAutoMessageBox:public QMessageBox
{
    Q_OBJECT
public:
    explicit CAutoMessageBox(QWidget*parent=0);
    ~CAutoMessageBox(){}

public:
    void AutoSetSize(int width,int high);

protected:
    void resizeEvent(QResizeEvent*event);

private:
    int m_width;
    int m_high;

};


#endif // AUTOMESSAGEBOX_H
#include "automessagebox.h"

CAutoMessageBox::CAutoMessageBox(QWidget *parent):QMessageBox(parent)
                                                  ,m_width(0)
                                                  ,m_high(0)
{

}

void CAutoMessageBox::AutoSetSize(int width, int high)
{
    m_width = width;
    m_high  = high;
}

void CAutoMessageBox::resizeEvent(QResizeEvent *event)
{
    setFixedSize(m_width,m_high);
}

3.测试

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private slots:
    void on_pushButton_clicked();

private:
    Ui::Widget *ui;
};


#include "widget.h"
#include "ui_widget.h"
#include "automessagebox.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_pushButton_clicked()
{
    CAutoMessageBox msg;
    msg.AutoSetSize(768,512);

    msg.setText(tr("hello world,hello QT..."));
    msg.setWindowTitle(tr("INFO"));
    msg.setStyleSheet("font:14px;background-color:rgb(255,224,220)");

    msg.setIcon(QMessageBox::Critical);
    msg.addButton(tr("YES"),QMessageBox::ActionRole);
    msg.addButton(tr("NO"),QMessageBox::AcceptRole);

    msg.exec();
}


#endif // WIDGET_H