好了,上面是对该控件的一些简单介绍,下面我们建一个具体的工程来运用一下这个控件,看看它的效果!
老规矩,第一步还是建立一个Gui的应用程序,在中心区域添加一个QLabel 控件、QScrollArea控件和QCommandLinkButton控件,具体布局如下图所示:
界面设计好后我们需要添加几张图片资源来配合使用,在该项目的项目目录下新建文件夹images,文件夹中添加几张图片,这里我在开源中国中找了几张图片来作为演示,资源添加好后在Qt的工程中选择添加新文件,新建一个资源文件,示例如下所示:
新建一个images.qrc
选择add ->add Prefix,在Prefix栏中添加“/”
然后单击add ->add files 将要添加的图片资源添加进来就可以了!如下图所示:
最后对CommandLinkButton按钮进行槽函数的添加与完善!
具体代码如下所示:
mainwindow.h
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QStringList> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private slots: void on_commandLinkButton_clicked(); private: Ui::MainWindow *ui; QStringList list; int currentImage; }; #endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QMessageBox> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); this->currentImage = 0; this->list << ":/images/1.jpg"<<":/images/2.gif"; ui->label->setBackgroundRole(QPalette::Base); ui->label->setSizePolicy(QSizePolicy::Ignored,QSizePolicy::Ignored); ui->label->setScaledContents(true); resize(500,400); QString fileName = list.at(this->currentImage); if(!fileName.isEmpty()) { QImage image(fileName); if(image.isNull()) { QMessageBox::information(this,tr("image Viewer"),tr("Can not load %1.").arg(fileName)); return; } ui->label->setPixmap(QPixmap::fromImage(image)); } } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_commandLinkButton_clicked() { if(this->currentImage == 1) this->currentImage = 0; else this->currentImage++; QString fileName = list.at(this->currentImage); if(!fileName.isEmpty()) { QImage image(fileName); if(image.isNull()) { QMessageBox::information(this,tr("image Viewer"),tr("Can not load %1.").arg(fileName)); return; } ui->label->setPixmap(QPixmap::fromImage(image)); } }
main.cpp
#include "mainwindow.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); }
好了,程序到这里应该可以成功运行了,来看一下我的运行结果,(*^__^*) 嘻嘻……
好了,今天就到这吧,fuck……,我还有个Bug没改,赶紧撤了!