QT 对话框添加背景图片的方法

这篇博客介绍了三种在Qt中设置界面背景的方法:使用QPalette将图片设置为控件背景,通过setStyleSheet使用CSS样式设置边框图片,以及覆盖paintEvent方法直接绘制背景图片。示例代码展示了如何实现这些效果,包括设置QFrame背景以及在QFrame上放置按钮并设置按钮图标。
摘要由CSDN通过智能技术生成

QPalette的方法

#include  < QApplication >
#include  < QtGui >

int  main( int  argc,  char   * argv[])
{
    QApplication app(argc,argv);
    
    QFrame  * frame  =   new  QFrame;
    frame -> resize( 400 , 700 );
    QPixmap pixmap("images/frame.png");
    QPalette   palette;
    palette.setBrush(frame -> backgroundRole(),QBrush( pixmap ));
    frame -> setPalette(palette);
    frame->setMask(pixmap.mask());  //可以将图片中透明部分显示为透明的
    frame -> setAutoFillBackground( true );
    frame -> show();

     return  app.exec();
}

setStyleSheet方法

#include  < QApplication >
#include  < QtGui >

int  main( int  argc,  char   * argv[])
{
    QApplication app(argc,argv);
    QFrame  * frame  =   new  QFrame;
    frame ->setObjectName("myframe" );
    frame -> resize( 400 , 700 );
    frame -> setStyleSheet( " QFrame#myframe{border-image:url(images/frame.png)} "  );
    frame -> show();

     return  app.exec();
}

paintEvent事件方法

// myframe.h文件
#ifndef MYFRAME_H
#define  MYFRAME_H

#include  < QWidget >
#include  < QtGui >

class  MyFrame :  public  QWidget
{
public :
    MyFrame();
     void  paintEvent(QPaintEvent  * event );
};

#endif   //  MYFRAME_H

// myframe.cpp文件
#include  " myframe.h "

MyFrame::MyFrame()
{
}

void  MyFrame::paintEvent(QPaintEvent  * event )
{
    QPainter painter( this );
    painter.drawPixmap( 0 , 0 , 400 , 700 ,QPixmap( " images/frame.png " ));
}

// main.cpp文件
#include  < QApplication >
#include  < QtGui >

#include  " myframe.h "

int  main( int  argc,  char   * argv[])
{
    QApplication app(argc,argv);
    
    MyFrame  * frame  =   new  MyFrame;
    frame -> resize( 400 , 700 );
    frame -> show();

     return  app.exec();
}
#include  < QApplication >
#include  < QtGui >

int  main( int  argc,  char   * argv[])
{
    QApplication app(argc,argv);

    QFrame  * frame  =   new  QFrame;
    QPushButton  *  button0  =   new  QPushButton(frame);
    QPushButton  *  button1  =   new  QPushButton(frame);
    QPushButton  *  button2  =   new  QPushButton(frame);
    QPushButton  *  button3  =   new  QPushButton(frame);
    QPushButton  *  button4  =   new  QPushButton(frame);
    QPushButton  *  button5  =   new  QPushButton(frame);

    frame -> setObjectName( " myframe " );
    frame -> resize( 400 , 700 );
    frame -> setStyleSheet( " QFrame#myframe{border-image:url(images/frame.png)} "  );

    button0 -> setGeometry( 60 , 150 , 68 , 68 );
    button1 -> setGeometry( 160 , 150 , 68 , 68 );
    button2 -> setGeometry( 260 , 150 , 68 , 68 );
    button3 -> setGeometry( 60 , 280 , 68 , 68 );
    button4 -> setGeometry( 160 , 280 , 68 , 68 );
    button5 -> setGeometry( 260 , 280 , 68 , 68 );

    QIcon icon;
    QPixmap pixmap0( " images/SMS.png " );
    icon.addPixmap(pixmap0);
    button0 -> setIcon(icon);
    button0 -> setIconSize(QSize( 68 , 68 ));
    button0 -> setFixedSize(pixmap0.size());
    button0 -> setMask(pixmap0.mask());


    QPixmap pixmap1( " images/EMail.png " );
    icon.addPixmap(pixmap1);
    button1 -> setIcon(icon);
    button1 -> setIconSize(QSize( 68 , 68 ));
    button1 -> setFixedSize(pixmap1.size());
    button1 -> setMask(pixmap1.mask());


    QPixmap pixmap2( " images/Contacts.png " );
    icon.addPixmap(pixmap2);
    button2 -> setIcon(icon);
    button2 -> setIconSize(QSize( 68 , 68 ));
    button2 -> setFixedSize(pixmap2.size());
    button2 -> setMask(pixmap2.mask());

    QPixmap pixmap3( " images/Calendar.png " );
    icon.addPixmap(pixmap3);
    button3 -> setIcon(icon);
    button3 -> setIconSize(QSize( 68 , 68 ));
    button3 -> setFixedSize(pixmap3.size());
    button3 -> setMask(pixmap3.mask());


    QPixmap pixmap4( " images/GoogleVoice.png " );
    icon.addPixmap(pixmap4);
    button4 -> setIcon(icon);
    button4 -> setIconSize(QSize( 68 , 68 ));
    button4 -> setFixedSize(pixmap4.size());
    button4 -> setMask(pixmap4.mask());


    QPixmap pixmap5( " images/AndroidMarket.png " );
    icon.addPixmap(pixmap5);
    button5 -> setIcon(icon);
    button5 -> setIconSize(QSize( 68 , 68 ));
    button5 -> setFixedSize(pixmap5.size());
    button5 -> setMask(pixmap5.mask());


    frame -> show();

     return  app.exec();
}

 

 

参考

QT 对话框添加背景图片的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值