怎么走豫园qt中怎么在qmessagebox添加背景图片第1个回答:winland07042017-09-29TA获

第1个回答:

winland07042017-09-29TA获得超过1038个赞关注这个简单,从QMessageBox派生一个类,然后重载paintEvent函数,在paintEvent里面画张图片就搞定了。代码:qpicmsgbox.h///////////////////////////////////#ifndefQPICMSGBOX_H#defineQPICMSGBOX_H#include<QMessageBox>#include<QImage>classQPicMsgBox:publicQMessageBox{Q_OBJECTpublic:explicitQPicMsgBox(QWidget*parent=0);QImage*pImage;protected:virtualvoidpaintEvent(QPaintEvent*paintevent);signals:publicslots:};#endif//QPICMSGBOX_H///////////////////////////////////////////////qpicmsgbox.cpp////////////////////////////////////////////#include"qpicmsgbox.h"#include<QString>#include<QPainter>QPicMsgBox::QPicMsgBox(QWidget*parent):QMessageBox(parent){QStringfileName=tr("7.jpg");pImage=newQImage(fileName);}voidQPicMsgBox::paintEvent(QPaintEvent*paintevent){QPainterpainter(this);painter.drawImage(0,0,pImage->scaled(this->size()));QMessageBox::paintEvent(paintevent);}///////////////////////////////////////绘制的背景图就是7.jpg缩放的,和消息框一样大。调用上面QPicMsgBox的时候就添加代码:#include"qpicmsgbox.h"/////////////////////voidMainWindow::on_actionMsg_triggered()////调用图片消息对话框{QPicMsgBox*pMsgBox=newQPicMsgBox;pMsgBox->setWindowTitle(QString(tr("hello")));pMsgBox->setText(QString(tr("hellogfkjdsgkldfsl;jgldsfg;klfdkjhglkdfs")));pMsgBox->addButton(QMessageBox::Ok);pMsgBox->addButton(QMessageBox::Close);pMsgBox->exec();/////////////exec是模式对话框,show是非模式的}