Linux 操作系统设计实践实验报告-实验五图形界面D
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
};
#endif // MAINWINDOW_H
for(j = 0; i < source.count(); j++) {
if(source.at(j) == files.at(i)) {
break; } } if(j == source.count()) { source.append(files.at(i)); } } maxindex = source.count() - 1; index = 0; }
《Linux 操作系统设计实践》 实验五:简单 UI 界面 实验环境
Linux 操作系统版本:Ubuntu 12.04 虚拟机版本:VMware 10 界面开发工具:Qt Creator 2.7.0 QT 版本:Qt 4.8.4 (32 bit)
实验内容
图片浏览器 1. 功能
a) 打开图片并显示(一次可以打开多张) b) 上一张,下一张浏览 c) 提示是否浏览到最后一张或最后一张 2. 运行结果 a) 打开图片
"/新建文件夹 /
if(fileNames.count() == 0)return;
//用来存储已打开的图片列表为空
if(source.count() == 0)
{
//将新打开的图片文件加入到已打开列表 中
source += fileNames;
//当前打开的图片是列表中的第 0 张
index = 0;
//槽函数(打开图片文件)
void MainWindow::open()
{
//打开文件对话框,并将打开的文件路径保存到 fileNames 中 QStringList fileNames = QFileDialog::getOpenFileNames(this, tr("打开..."),
简单 UI 界面", tr("图片(*.jpg *.png)")); //如果没有打开任何文件
b) 显示图片
c) 上一张 d) 下一张
e) 提示当前是否到最后一张或第一张
3. 代码 a) main.cpp #include <QApplication> #include <QTextCodec> #include "mainwindow.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8")); //创建一个主界面对象并显示 MainWindow mw;
//打开(显示)图片 void MainWindow::show_image(QString file) {
te_show->clear(); QUrl Uri ( QString ( "file://%1" ).arg (file) ); QImage image = QImageReader (file).read(); QTextDocument * textDocument = this->te_show->document(); textDocument->addResource( QTextDocument::ImageResource, Uri, QVariant ( image ) ); QTextCursor cursor = this->te_show->textCursor(); QTextImageFormat imageFormat; imageFormat.setWidth( image.width() ); imageFormat.setHeight( image.height() ); imageFormat.setName( Uri.toString() ); cursor.insertImage(imageFormat); } c) mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H
#include <QtGui> #include "ui_mainwindow.h"
class MainWindow : public QMainWindow, public Ui_My_mainwin {
Q_OBJECT
public: MainWindow(QWidget *parent = NULL);
//槽函数(下一张) void MainWindow::next() {
if(index == maxindex) {
QMessageBox::information(this, tr(" 提 示 "), tr(" 已 经 是 最 后 一 张 "), QMessageBox::Ok);
} else {
index += 1; show_image(source.at(index)); } }
//槽函数(上一张) void MainWindow::last() {
if(index == 0) {
QMessageBox::information(this, tr(" 提 示 "), tr(" 已 经 是 第 一 张 "), QMessageBox::Ok);
mw.show();
return app.exec();
Байду номын сангаас
} b) mainwindow.cpp
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{ //启动 UI 界面 setupUi(this); //设置对话框标题 this->setWindowTitle(tr("实验五:简单 UI 界面")); //设置 textedit 部件为只读模式 te_show->setReadOnly(true); //设置工具栏不可移动 toolBar->setMovable(false);
public slots: void open(); void next(); void last(); void del_repeat_open(QStringList files); void show_image(QString file);
private: QStringList source; int index; int maxindex; int listNum; QString fileName;
} else {
index -= 1; show_image(source.at(index)); } }
//去重函数 void MainWindow::del_repeat_open(QStringList files) {
int i;
int j; for(i = 0; i < files.count(); i++) {
//当前打开的图片张数为 source.count()
maxindex = source.count() - 1;
} else {
//已打开列表中已有文件,则要去重 del_repeat_open(fileNames); } //显示图片 show_image(fileNames.at(index)); }
//连接信号和槽 connect(actionOpen, SIGNAL(triggered()), this, SLOT(open())); connect(actionNext, SIGNAL(triggered()), this, SLOT(next())); connect(actionLast, SIGNAL(triggered()), this, SLOT(last())); }
#endif // MAINWINDOW_H
for(j = 0; i < source.count(); j++) {
if(source.at(j) == files.at(i)) {
break; } } if(j == source.count()) { source.append(files.at(i)); } } maxindex = source.count() - 1; index = 0; }
《Linux 操作系统设计实践》 实验五:简单 UI 界面 实验环境
Linux 操作系统版本:Ubuntu 12.04 虚拟机版本:VMware 10 界面开发工具:Qt Creator 2.7.0 QT 版本:Qt 4.8.4 (32 bit)
实验内容
图片浏览器 1. 功能
a) 打开图片并显示(一次可以打开多张) b) 上一张,下一张浏览 c) 提示是否浏览到最后一张或最后一张 2. 运行结果 a) 打开图片
"/新建文件夹 /
if(fileNames.count() == 0)return;
//用来存储已打开的图片列表为空
if(source.count() == 0)
{
//将新打开的图片文件加入到已打开列表 中
source += fileNames;
//当前打开的图片是列表中的第 0 张
index = 0;
//槽函数(打开图片文件)
void MainWindow::open()
{
//打开文件对话框,并将打开的文件路径保存到 fileNames 中 QStringList fileNames = QFileDialog::getOpenFileNames(this, tr("打开..."),
简单 UI 界面", tr("图片(*.jpg *.png)")); //如果没有打开任何文件
b) 显示图片
c) 上一张 d) 下一张
e) 提示当前是否到最后一张或第一张
3. 代码 a) main.cpp #include <QApplication> #include <QTextCodec> #include "mainwindow.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8")); //创建一个主界面对象并显示 MainWindow mw;
//打开(显示)图片 void MainWindow::show_image(QString file) {
te_show->clear(); QUrl Uri ( QString ( "file://%1" ).arg (file) ); QImage image = QImageReader (file).read(); QTextDocument * textDocument = this->te_show->document(); textDocument->addResource( QTextDocument::ImageResource, Uri, QVariant ( image ) ); QTextCursor cursor = this->te_show->textCursor(); QTextImageFormat imageFormat; imageFormat.setWidth( image.width() ); imageFormat.setHeight( image.height() ); imageFormat.setName( Uri.toString() ); cursor.insertImage(imageFormat); } c) mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H
#include <QtGui> #include "ui_mainwindow.h"
class MainWindow : public QMainWindow, public Ui_My_mainwin {
Q_OBJECT
public: MainWindow(QWidget *parent = NULL);
//槽函数(下一张) void MainWindow::next() {
if(index == maxindex) {
QMessageBox::information(this, tr(" 提 示 "), tr(" 已 经 是 最 后 一 张 "), QMessageBox::Ok);
} else {
index += 1; show_image(source.at(index)); } }
//槽函数(上一张) void MainWindow::last() {
if(index == 0) {
QMessageBox::information(this, tr(" 提 示 "), tr(" 已 经 是 第 一 张 "), QMessageBox::Ok);
mw.show();
return app.exec();
Байду номын сангаас
} b) mainwindow.cpp
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{ //启动 UI 界面 setupUi(this); //设置对话框标题 this->setWindowTitle(tr("实验五:简单 UI 界面")); //设置 textedit 部件为只读模式 te_show->setReadOnly(true); //设置工具栏不可移动 toolBar->setMovable(false);
public slots: void open(); void next(); void last(); void del_repeat_open(QStringList files); void show_image(QString file);
private: QStringList source; int index; int maxindex; int listNum; QString fileName;
} else {
index -= 1; show_image(source.at(index)); } }
//去重函数 void MainWindow::del_repeat_open(QStringList files) {
int i;
int j; for(i = 0; i < files.count(); i++) {
//当前打开的图片张数为 source.count()
maxindex = source.count() - 1;
} else {
//已打开列表中已有文件,则要去重 del_repeat_open(fileNames); } //显示图片 show_image(fileNames.at(index)); }
//连接信号和槽 connect(actionOpen, SIGNAL(triggered()), this, SLOT(open())); connect(actionNext, SIGNAL(triggered()), this, SLOT(next())); connect(actionLast, SIGNAL(triggered()), this, SLOT(last())); }