Qt学习之路 详解 下篇

移动开发
本文介绍对是Qt学习之路 Chapter详解,用到了Qt 的很多类,本文实例是创建窗口,请看本文吧。

本文开始介绍Qt学习之路,本文用了大量的类,这样才能使我们可以很好的去了解Qt

Subclassing QMainWindow(从QMainWindow 派生类)

closeEvent是QWidget的虚函数, 当关闭窗口时自动调用, 在派生类中可以重新实现该函数. Qt 应用程序使用图像的方法: 保存图像至文件, 运行期间加载 在源代码中包含XPM文件(XPM文件也是有效的C++文件)

使用Qt资源机制

如果需要使用资源系统, 我们必须创建资源文件, 并在.pro文件中添加一行标识资源文件: RESOURCES = spreadsheet.qrc

资源文件仅仅是简单的XML格式

  1. <RCC>   
  2.  <qresource>    
  3.     <file>images/icon.png</file>   
  4.      ...   
  5.       <file>images/gotocell.png</file> 
  6.   </qresource> 
  7.   </RCC> 
  8.   <RCC> 
  9. <qresource> 
  10.     <file>images/icon.png</file> 
  11.     ...  
  12.     <file>images/gotocell.png</file> 
  13. </qresource> 
  14. </RCC> 

 
需要使用前缀 :/, 如 :/images/icon.png

2 、Creating Menus and Toolbars

Qt中创建菜单和工具条有以下三个步骤:

创建和设置Action
创建菜单和并给他们放置action

创建工具条并给他们放置action

  1. QAbstractItemView:: selectAll()   
  2. QTableView::setShowGrid(bool)  

QMainWindow::menuBar () --- ***次调用则创建一个菜单条

widget增加右键菜单的方法:

首先addAction, 而后调用setContextMenuPolicy(Qt::ActionsContextMenu); 设置关联菜单,是重载QWidget::contextMenuEvent函数, 然后调用exec()实现

  1. QMainWindow::addToolBar() --- 增加工具条  

3、 Setting Up the Status Bar

QMainWindow::statusBar ()函数得到其指针, 而后可用 addWidget() 添加该状态栏

QStatusBar::addWidget() 第二个参数设置为1表示拉伸

#p#

4、Implementing the File Menu

QMessageBox::warning() --- 警告对话框, 还有 information(), question(), critical()

QFileDialog::getOpenFileName() 打开文件对话框. QFileDialog::getSaveFileName 保存文件对话框, QFileDialog::DontConfirmOverwrite()

文件对话框的窗口会出现其父窗口的左上角, 并共享其父窗口的任务条(taskbar entry)

QWidget的close() slot会调用closeEvent()

  1. event->ignore(); // 忽略该事件   
  2. event->accept(); // 表示接受该事件  

我们可以通过设置QApplication's quitOnLastWindowClosed 属性为假来禁止程序关闭, 直至调用QApplication::quit()

  1. QFileInfo(fullFileName).fileName(); 得到文件名  

Qt列表容器的prepend()函数用于列表, 列表类的方法之一, 作用是插入列表的开头

QVariant类型可以保存许多C++和Qt类型的数据, 可将该数据保存至 Action 的Data中QObject::sender() 该函数可以在slot中得到sender object的指针, 对于多个signal连接至一个slot时很有用.

5、Using Dialogs

通过signal和slot 对查找对话框和主程序进行互动

QWidget可以通过方法 raise() 和 activateWindow() 来使得该窗口激活在屏幕的最前方

非模式对话框使用show()来显示, 模式对话框则使用 exec()来显示

QTableWidgetSelectionRange --- 存储表格选择区域的左上和右下所在行列

About对话框 --- QMessageBox::about()

比较少的做法: QMessageBox 或 QFileDialog可以像正常的widget那样创建, 而后调用exec执行.

6、 Storing Settings

 

QSettings在不同的平台中, 存储在不同的地方. Windows程序则存储在系统注册表里.

其构造函数参数含组织名称和应用程序名称, 方便其查找和写入

QSettings 存储类 key-value对的设定, key类似文件系统路径, subkey则类似路径语法(如findDialog/matchCase)

可使用beginGroup()和endGroup()

  1. settings.beginGroup("findDialog");  
  2.    settings.setValue("matchCase", caseCheckBox->isChecked());  
  3.    settings.setValue("searchBackward", backwardCheckBox->isChecked());  
  4.    settings.endGroup();  
  5.          settings.beginGroup("findDialog");  
  6. settings.setValue("matchCase", caseCheckBox->isChecked());  
  7. settings.setValue("searchBackward", backwardCheckBox->isChecked());  
  8. settings.endGroup(); 

QSetting的value则可以为int, bool, double, QString, QStringList, 或者任意QVariant支持的类型.

7、Multiple Documents

修改程序为多文档程序

File|New: 创建一个新的空文档窗口, 而不是重新使用已存的主窗口

File|Close: 关闭当前主窗口

File|Exit: 关闭所有窗口

给widget设置属性Qt::WA_DeleteOnClose, 当关闭的时候删除该widget在内存中的资源, 节省内存. setAttribute(Qt::WA_DeleteOnClose);

foreach (QWidget *win, QApplication::topLevelWidgets()); // 可以用来遍历应用程序的所有窗口

8、Splash Screens

QSplashScreen实现Splash Screen效果

QSplashScreen在主窗口显示之前显示一张图像, 并在图像上写信息用来告知用户应用程序的初始化过程.

splash代码一般位于main()函数中, 在调用QApplication::exec()之前

  1. QSplashScreen *splash = new QSplashScreen;  
  2.    splash->setPixmap(QPixmap(":/images/splash.png"));  
  3.    splash->show();  
  4.    Qt::Alignment topRight = Qt::AlignRight | Qt::AlignTop;  
  5.    splash->showMessage(QObject::tr("Setting up the main window..."),       topRight, Qt::white);  
  6.    ... ...  
  7.    splash->showMessage(QObject::tr("Loading modules..."),       topRight, Qt::white);  
  8.    ... ...  
  9.    splash->showMessage(QObject::tr("Establishing connections..."),       topRight, Qt::white);   
  10.   ... ...  
  11.    splash->finish(&mainWin);  
  12.    delete splash;  
  13.    return app.exec();   

小结:Qt学习之路内容介绍完了,不知道有没有帮助到你,也许你已经对Qt很熟悉了,***希望本品按文章能帮助你很好的去学习,想了解更多请看:

Qt学习之路 上篇

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-06-17 09:58:26

Qt Chapter QObject

2011-07-05 18:40:19

QT 信号 机制

2011-06-30 10:36:07

QT Graphics View

2011-06-27 10:28:45

Qt 网络 TCP

2011-06-24 16:50:06

QT 框架 OpenCV

2011-06-23 18:16:59

Qt Qtopia

2011-07-01 14:20:59

Qt 事件

2011-07-02 13:42:24

Qt 移植

2011-07-05 13:32:45

QT Mysql 驱动

2011-07-02 13:24:39

QT Linux

2011-09-07 16:28:46

QT WidgetQWidget

2010-05-18 13:53:34

Subversion插

2011-06-17 17:16:01

Qt Eclipse Linux

2011-06-17 13:39:47

Qt 文件

2011-09-01 16:01:25

Qt插件

2011-09-09 17:24:39

Qt Webkit模块

2011-06-27 13:49:43

Qt 数据库 QSqlQueryM

2011-06-30 16:08:05

Qt 字库 QPF

2018-04-20 12:12:18

数据分析可视化数据挖掘

2016-12-15 21:15:58

大数据
点赞
收藏

51CTO技术栈公众号