qt插入图片的方法文档格式.docx
《qt插入图片的方法文档格式.docx》由会员分享,可在线阅读,更多相关《qt插入图片的方法文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
frame->
resize(400,700);
QPixmappixmap("
images/frame.png"
);
QPalette
palette;
palette.setBrush(frame->
backgroundRole(),QBrush(pixmap));
setPalette(palette);
frame->
setMask(pixmap.mask());
//可以将图片中透明部分显示为透明的
setAutoFillBackground(true);
show();
return
app.exec();
}
注意图片路径怎么表示,我的图片放在该工程下的images文件夹中。
存在问题:
图片可以显示出来,但是图片大小不能和frame大小一致,显示效果不好,具体怎样调整大小,以后再补充,效果如下(设置了透明的,好像很漂亮~透明部分将我的桌面显示出来了~_~):
2.setStyleSheet方法(非常好用的方法)
setObjectName("
myframe"
setStyleSheet("
QFrame#myframe{border-image:
url(images/frame.png)}"
效果如下:
注意:
很漂亮的效果吧~~注意代码中红线的部分噢,设置ObjectName后,才能保证setStyleSheet只作用在我们的frame上,不影响其子控件的背景设置。
之所以用border-image而不用background-image,还是上面的问题,用background-image不能保证图片大小和控件大小一致,图片不能完全显示,这个以后再补充了,现在还没有找到方法。
3.paintEvent事件方法
//myframe.h文件
#ifndef
MYFRAME_H
#define
QWidget>
class
MyFrame
:
public
QWidget
public:
MyFrame();
void
paintEvent(QPaintEvent
*event);
};
#endif
//
//myframe.cpp文件
"
myframe.h"
MyFrame:
MyFrame()
*event)
QPainter
painter(this);
painter.drawPixmap(0,0,400,700,QPixmap("
));
//main.cpp文件
MyFrame;
注:
跟前面一样的效果吧,与前面的差别就是这个背景图片不随着窗口的大小而变化,因为它的固定大小被设置成(400,700)了。
重写QWidget的paintEvent事件,当控件发生重绘事件,比如show()时,系统就会自动调用paintEvent函数。
好了,上面是三种设置背景图片的方法,下面我要说一个设置QPushButton的背景图片的方法,用的是setIcon方法(其实QPushButton设置背景图片也可以用前面三种方法的,不过现在这种Icon方法的看起来也不错)
QPushButton
*
button0
QPushButton(frame);
button1
button2
button3
button4
button5
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);
setIcon(icon);
setIconSize(QSize(68,68));
setFixedSize(pixmap0.size());
setMask(pixmap0.mask());
pixmap1("
images/EMail.png"
icon.addPixmap(pixmap1);
setFixedSize(pixmap1.size());
setMask(pixmap1.mask());
pixmap2("
images/Contacts.png"
icon.addPixmap(pixmap2);
setFixedSize(pixmap2.size());
setMask(pixmap2.mask());
pixmap3("
images/Calendar.png"
icon.addPixmap(pixmap3);
setFixedSize(pixmap3.size());
setMask(pixmap3.mask());
pixmap4("
images/GoogleVoice.png"
icon.addPixmap(pixmap4);
setFixedSize(pixmap4.size());
setMask(pixmap4.mask());
pixmap5("
images/AndroidMarket.png"
icon.addPixmap(pixmap5);
setFixedSize(pixmap5.size());
setMask(pixmap5.mask());
图标效果不错吧~_~
好了,今天就写到这里,以后有新的内容再补充。
补充,这样就可以让图片跟窗口一样大小了。
QImage
image1;
image1.load("
images/frame1.jpg"
image2
image1.scaled(400,700);
palette.setBrush(frame->
backgroundRole(),QBrush(image2));
//可以将图片中透明部分显示为透明的
QT显示图片的方法有很多
大致为
label上显示
直接画出来
容器显示
1---------------显示gif图片(label上显示)
在QT中要显示GIF图片,不能通过单单的添加部件来完成.
还需要手动的编写程序.
工具:
QTCreator
新建一个工程,我们先在designer中,添加一个QLabel部件.
如下图:
将QLabel拉成适当大小.
在类cpp函数中添加如下程序:
#include"
widget.h"
ui_widget.h"
#include<
QLabel>
QMovie>
Widget:
Widget(QWidget*parent):
QWidget(parent),
ui(newUi:
Widget)
ui->
setupUi(this);
QMovie*movie=newQMovie("
D:
/Project/Qt/testclass/2.gif"
label->
setMovie(movie);
movie->
start();
~Widget()
deleteui;
这里要注意QMovie中的路径名:
这里的路径斜杠和WINDOWS下是相反的.WINDOWS下默认是反斜杠.
编译,运行就没有问题,就会看到GIF文件在播放了.
当文档GIF图片显示:
QtGui/QApplication>
intmain(intargc,char*argv[])
QApplicationapp(argc,argv);
QLabel*label=newQLabel();
/Project/Qt/firstQT/2.gif"
returnapp.exec();
2-------------------------label上显示图片------------------
把你的label.png放到工程目录顶层,直接
QPixmappixmap("
label.png"
title_label->
setPixmap(pixmap);
---
可以直接:
setPixmap(QPixmap("
./pic.jpg"
或者:
QImage*image=newQImage("
setPixmap(QPixmap:
fromImage(image));
再或者在中途换某个图像的话:
./pic1.jpg"
...........
image->
load("
./pic2.jpg"
3----------直接画出图片-------------------------
voidlogindlg:
paintEvent(QPaintEvent*)
QPainterpainter(this);
QPixmappix;
pix.load("
/QT/login/login/images/delta.png"
painter.drawPixmap(0,0,100,33,pix);
//painter.drawLine(0,0,100,100);
4-----------程序启动时的图片
QApplicationapp(argc,
argv);
QSplashScreen
*splash
QSplashScreen;
splash->
/images/splash.png"
//设置图片
//显示图片
Qt:
AlignmenttopRight
Qt:
AlignRight
|
AlignTop;
showMessage(QObject:
tr("
Settingupthemainwindow..."
),topRight,
white);
//显示信息
MainWindowmainWin;
Loadingmodules..."
),
topRight,
loadModules();
Establishingconnections..."
establishConnections();
mainWin.show();
finish(&
mainWin);
//图片一直显示到mainWin加载完成
delete
splash;
//释放空间,节省内存
来自:
首先你得加载一张能显示透明的图片,jpg格式肯定是不行的,一般都是png
还有不同的部件加载图片的方法也不太相同,比如:
QLabel加载图片:
C/C++code
QStringstrPath=imagePath.value(day);
//图片路径
QPixmappix(strPath);
dayLabel->
setPixmap(pix);
QPushButton加载图片:
button->
setIcon(QIcon("
toolbutton.png"
button->
setIconSize(QSize(48,48));
其中setIconSize函数是用来截取图片的显示区域,如果没有该函数,该图片是被缩放的放到图片上
用调色板加载图片:
QPalettep=palette();
p.setBrush(QPalette:
Button,QBrush(QPixmap("
)));
setPalette(p);
另外实现按钮的透明:
setFlat(true);
还有就是用绘制事件函数了:
QPixmaparrayImage("
/home/image/array.png"
//图片路径
QRectarrayRect(0,0,50,50);
//截取图片区域
QPainterpainter;
painter.drawPixmap(QPoint(100,100),arrayImage,arrayRect);
//打印图片