读书频道 > 系统 > linux > Linux环境下Qt4图形界面与MySQL编程
3.3.8 示例3:CommandLinkButton的应用
2012-11-05 10:46:07     我来说两句 
收藏    我要投稿   
在Linux操作系统环境下,图形界面与数据库编程技术越来越受到广泛重视。本书以图形界面编程控件与数据库编程基础→简单易学的实例→实际工程项目开发与场景分析为写作主线,以当前最新的Qt4.7为依据,采...  立即去当当网订购

首先建立标准的Qt Gui Application项目,把项目自动生成的toolBar、menuBar和statusBar删除,设计界面如图3-20所示。


 

1.控件说明

在属性编辑窗口中对控件的属性进行修改,修改内容如表3-5所示。

表3-5 主要控件说明

 

2.示例说明

界面布局设置好之后,添加资源文件。在该示例的项目目录下新建文件夹images,文件夹images中有5张图片,分别是:1.jpg、2.jpg、3.jpg、4.jpg和5.jpg。然后在Qt Creator中右击该项目,在弹出的窗口中选择“Qt Resource file”,如图3-21所示,添加的资源文件名称为images,如图3-22所示,单击“Next”按钮,弹出如图3-23所示的窗口,保持默认设置,单击“Finish”按钮完成资源文件的添加。


 

打开新建的images.qrc,选择“Add→Add Prefix”,如图3-24所示。


 

在Prefix栏内添加“/”,添加后如图3-25所示。

然后单击“add→Add Files”,选中要添加的5张图片并确定,添加成功后如图3-26所示。


 

示例功能说明:这个示例很简单,程序执行后,label显示1.jpg,单击“Command Link Button”控件,显示下一张图片,循环显示。

3.示例实现

头文件mainwindow.h(文中的粗体为需要添加的内容):
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
 class MainWindow;
}
class MainWindow : public QMainWindow
{
 Q_OBJECT
public:
 explicit MainWindow(QWidget *parent = 0);
 ~MainWindow();
private:                     //私有成员变量
 Ui::MainWindow *ui;
 QStringList list;//图片列表
 int currentImage;//当前图片编号
private slots://私有槽函数
 void on_commandLinkButtonNext_clicked();//槽函数
};
#endif // MAINWINDOW_H

这里只在Qt Gui Application项目自动生成的头文件mainwindow.h里声明两个变量和一个槽函数。list用于保存图片,currentImage用于保存当前显示的图片编号。槽函数on_commandLinkButtonNext_clicked()对应commandLinkButtonNext的单击信号。因此此处的槽函数是通过右击控件→Go to slots自动生成的,所以不用在实现文件中添加映射函数。

在主窗体mainwindow.cpp文件中自动生成如下代码:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
 QMainWindow(parent),
 ui(new Ui::MainWindow)
{
 ui->setupUi(this);
}
MainWindow::~MainWindow()
{
 delete ui;
}

在主窗体mainwindow.cpp文件中添加的头文件:
#include <QMessageBox>
#include<QFileDialog>

在主窗体mainwindow.cpp文件中构造函数:
/***构造函数***/
MainWindow::MainWindow(QWidget *parent) :
 QMainWindow(parent),
 ui(new Ui::MainWindow)
{
 ui->setupUi(this);
 this->currentImage = 0;

 /*************初始化图片列表list**********************8/
 this->list<<":/images/1.jpg"<<":/images/2.jpg"<<":/images/3.jpg"<<
 ":/images/4.jpg"<<":/images/5.jpg";
 ui->imageLabel->setBackgroundRole(QPalette::Base);
 ui->imageLabel->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
 ui->imageLabel->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("Cannot load %1.").arg(fileName));
    return;
  }
  ui->imageLabel->setPixmap(QPixmap::fromImage(image));//用图片填充imageLabel
 }
}

在主窗体mainwindow.cpp文件中添加槽函数on_commandLinkButtonNext_clicked():
/***槽函数:实现图片循环展示***/
void MainWindow::on_commandLinkButtonNext_clicked()
{
 if(this->currentImage == 4)                 //实现图片循环展示
  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("Cannot load %1.").arg(fileName));
    return;
  }
  ui->imageLabel->setPixmap(QPixmap::fromImage(image)); //显示图片
 }
}

不需要更改主文件main.cpp,使用工程自动生成的即可。

4.示例执行结果

示例执行结果如图3-27所示。


 

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:3.3.7 CommandLinkButton控件
下一篇:3.3.9 ButtonBox控件
相关文章
图文推荐
3.3.6 GNOME的软件管
3.3.5 GNOME的文件管
3.3.4 GNOME的窗口管
3.3.3 收藏夹和快捷
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站