QT表示画像
15164 ワード
QTは写真を表示する方法がたくさんあります.
大体
labelに表示する
直接に描き出す
コンテナの表示
1-------gif画像を表示する(labelに表示する)
http://archive.cnblogs.com/a/2053701/
QTにGIF画像を表示するには、単に部品を追加してはいけません.
手動でプログラムを作成する必要があります.
ツール:QT Creator
新しいプロジェクトを作って、まずdesignerにQLabel部品を追加します.
次の図のように
QLabelを適当な大きさにします.
クラスcpp関数に以下のプログラムを追加します.
Qiplicationアプリ(argc、 argv; QSplashScreen *splash = new QSplashScreen splash->set Pixmap(QPixmap(「//imags/splash.png」)画像の設定 splash->show()///画像を表示 Qt::Alignment topRight = Qt:AlignRight | Qt::Align Top; splash->show Message(QObject:tr(「Setting up the main window...」)、topRight、 Qt::white)//メッセージを表示 MainWindow manWin; splash->show Message(QObject:tr(Loading modules)、 topRight Qt::white); //メッセージを表示 loadModules(); splash->show Message(QObject:tr(「Establishing connect...」)、 topRight Qt::white); //メッセージを表示 エスタblish Connection() main Win.show() splash->finish(&main Win)/.画像はずっとmanWinロード完了まで表示されます. delete splash;メモリを節約する return app.exec()
来た: http://hi.baidu.com/sdink/blog/item/879e7013027a7fcaa7ef3f83.html
まず、透明な画像を表示するために、jpgフォーマットをロードしなければなりません.
また、パーツによって画像をロードする方法も違っています.例えば、
QLabelロード画像:
C/C++コード
QString strePath=イメージPath.value(day); //画像のパス
QPixmap pix(strePath)
day Label->set Pixmap(pix);
QPusshButtonロード画像:
C/C++コード
button->set Icon(QIcon);
button->setIconSize(QSize(48,48);
ここで、setsIconSize関数は、画像を切り取るための表示領域であり、この関数がない場合は、画像はズームされて画像に載せられます.
画像をパレットで読み込み:
C/C++コード
QPalette p=palette()
p.set Brush(QPalette::Button,QBrush(QPixmap);
set Palette(p)
またボタンの透過性を実現します.
C/C++コード
button->set Flat(true);
また、イベント関数を描画します.
C/C++コード
QPixmap arrayImage(「/home/image/array.png」);画像のパス
QRect arrayRect(0,0,50,50)//画像領域の切り取り
QPainter painter;
painter.drawPixmap(QPoint(100,100)、arrayImage、arrayRect);画像を印刷
大体
labelに表示する
直接に描き出す
コンテナの表示
1-------gif画像を表示する(labelに表示する)
http://archive.cnblogs.com/a/2053701/
QTにGIF画像を表示するには、単に部品を追加してはいけません.
手動でプログラムを作成する必要があります.
ツール:QT Creator
新しいプロジェクトを作って、まずdesignerにQLabel部品を追加します.
次の図のように
QLabelを適当な大きさにします.
クラスcpp関数に以下のプログラムを追加します.
#include " widget.h "
#include " ui_widget.h "
#include < QLabel >
#include < QMovie >
Widget::Widget(QWidget * parent) :
QWidget(parent),
ui( new Ui::Widget)
{
ui -> setupUi( this );
QMovie * movie = new QMovie( " D:/Project/Qt/testclass/2.gif " );
ui -> label -> setMovie(movie);
movie -> start();
}
Widget:: ~ Widget()
{
delete ui;
}
如下图:
这里要注意QMovie中的路径名:"D:/Project/Qt/testclass/2.gif" 这里的路径斜杠和WINDOWS下是相反的.WINDOWS下默认是反斜杠.
编译,运行就没有问题,就会看到GIF文件在播放了.
如下图:
当文档GIF图片显示:
#include < QtGui / QApplication >
#include < QLabel >
#include < QMovie >
int main( int argc, char * argv[])
{
QApplication app(argc,argv);
QLabel * label = new QLabel();
QMovie * movie = new QMovie( " D:/Project/Qt/firstQT/2.gif " );
label -> setMovie(movie);
movie -> start();
label -> show();
return app.exec();
}
2-------------------------label上显示图片------------------
把你的label.png放到工程目录顶层,直接
QPixmap pixmap("label.png");
ui->title_label->setPixmap(pixmap);
ui->title_label->show();
---
可以直接:
label->setPixmap(QPixmap("./pic.jpg"));
或者:
QImage *image= new QImage("./pic.jpg");
label->setPixmap(QPixmap::fromImage(image));
再或者在中途换某个图像的话:
QImage *image= new QImage("./pic1.jpg");
label->setPixmap(QPixmap::fromImage(image));
...........
image->load("./pic2.jpg");
3----------直接画出图片-------------------------
void logindlg::paintEvent(QPaintEvent*)
{
QPainter painter(this);
QPixmap pix;
pix.load("D:/QT/login/login/images/delta.png");
painter.drawPixmap(0,0,100,33,pix);
// painter.drawLine(0,0,100,100);
}
4-----------プログラム起動時のイメージQiplicationアプリ(argc、 argv; QSplashScreen *splash = new QSplashScreen splash->set Pixmap(QPixmap(「//imags/splash.png」)画像の設定 splash->show()///画像を表示 Qt::Alignment topRight = Qt:AlignRight | Qt::Align Top; splash->show Message(QObject:tr(「Setting up the main window...」)、topRight、 Qt::white)//メッセージを表示 MainWindow manWin; splash->show Message(QObject:tr(Loading modules)、 topRight Qt::white); //メッセージを表示 loadModules(); splash->show Message(QObject:tr(「Establishing connect...」)、 topRight Qt::white); //メッセージを表示 エスタblish Connection() main Win.show() splash->finish(&main Win)/.画像はずっとmanWinロード完了まで表示されます. delete splash;メモリを節約する return app.exec()
来た: http://hi.baidu.com/sdink/blog/item/879e7013027a7fcaa7ef3f83.html
まず、透明な画像を表示するために、jpgフォーマットをロードしなければなりません.
また、パーツによって画像をロードする方法も違っています.例えば、
QLabelロード画像:
C/C++コード
QString strePath=イメージPath.value(day); //画像のパス
QPixmap pix(strePath)
day Label->set Pixmap(pix);
QPusshButtonロード画像:
C/C++コード
button->set Icon(QIcon);
button->setIconSize(QSize(48,48);
ここで、setsIconSize関数は、画像を切り取るための表示領域であり、この関数がない場合は、画像はズームされて画像に載せられます.
画像をパレットで読み込み:
C/C++コード
QPalette p=palette()
p.set Brush(QPalette::Button,QBrush(QPixmap);
set Palette(p)
またボタンの透過性を実現します.
C/C++コード
button->set Flat(true);
また、イベント関数を描画します.
C/C++コード
QPixmap arrayImage(「/home/image/array.png」);画像のパス
QRect arrayRect(0,0,50,50)//画像領域の切り取り
QPainter painter;
painter.drawPixmap(QPoint(100,100)、arrayImage、arrayRect);画像を印刷