Qt
进击的横打
此人不懒,但也什么都没有写
展开
-
(转)1.2 连接信号和响应函数
这个例子用来说明怎么响应信号,和hello程序的源代码相似,原来的Label用一个按钮代替,点击时退出程序。源程序如下: 1 #include 2 #include 3 int main(int argc, char *argv[]) 4 { 5 QApplication app(argc, argv); 6 QPushButton *button = new QPushB原创 2008-05-03 14:38:00 · 810 阅读 · 0 评论 -
(转)4.5实现其它菜单
在这一节我们将会实现Tools和Options菜单的相应槽。Figure 4.7. The Spreadsheet applications Tools and Options menusvoid Spreadsheet::recalculate(){ for (int row = 0; row for (int column = 0; colu转载 2008-05-08 21:26:00 · 1454 阅读 · 0 评论 -
(转)4.2从QTableWidget继承(Subclassing QTableWidget)
类Spreadsheet从QTableWidget继承。QTableWidget是一个表示二维离散数组的表格。它在给定维度里显示当前用户滚动的单元格。当用户在一个空的单元格中输入一些文本时,QTableWidget自动创建一个QTableWidgetItem对象保存输入的文本。现在我们来实现这个类,首先是头文件spreadsheet.h,首先前向声明两个类Cell和SpreadsheetC转载 2008-05-08 21:08:00 · 3200 阅读 · 0 评论 -
(转)4.4 实现Edit菜单
现在我们开始实现菜单Edit相应的槽函数。void Spreadsheet::cut(){ copy(); del();}槽函数cut()相应Edit|Cut菜单,这里调用了两个函数,因为剪切的操作和拷贝然后删除是等价的void Spreadsheet::copy(){ QTableWidgetSelectionRange range =转载 2008-05-08 21:24:00 · 1222 阅读 · 0 评论 -
(转)4.6从类QTableWidgetItem派生(Subclassing QTableWidgetItem)
类Cell继承自QTableWidgetItem。这个类在Spreadsheet程序中工作良好,但是它没有特殊依赖,在理论上,它可以被用在任何QTableWidget类中。下面是头文件:#ifndef CELL_H#define CELL_H#include QTableWidgetItem>class Cell : public QTableWidgetItem{public:转载 2008-05-08 21:34:00 · 2468 阅读 · 0 评论 -
(转) 5.3把自定义控件集成到Qt Designer中(Integrating Custom Widgets with Qt Designer)
要想在Qt Designer中使用自定义控件,必须要使Qt Designer能够知道我们的自定义控件的存在。有两种方法可以把新自定义控件的信息通知给Qt Designer:“升级(promotion)”法和插件法。升级法最为简便快捷。顾名思义,升级法就是把Qt自有的控件进行升级改造一番。选一个Qt自有的控件,如果它和我们新加的自定义控件有着相似的API,那么只要在Qt Designer的对转载 2008-05-12 21:58:00 · 5440 阅读 · 0 评论 -
(转)5.1自定义Qt控件(Customizing Qt Widgets)
在某些情况下,我们发现有些Qt控件通过设置它的属性或者调用函数不能满足我们的要求,还需要更多的要求。一个简单且直接的解决方法就是从这些Qt继承然后让它们满足我们的需要。图5-1 the HexSpinBox widget在本节中,我们开发一个十六进制的spin box来说明怎样来自定义Qt的控件。QSpinBox只支持十进制整数,但是从它派生新类能够接受和显示十六进制数值是非常简单转载 2008-05-12 21:54:00 · 2167 阅读 · 0 评论 -
(转)5.2从QWidget派生(Subclassing QWidget)
许多自定义控件是已有的Qt控件或者象HexSpinBox这些自定义控件的组合。由现有控件组合而成的用户控件可以用Qt Designer实现:1. 用模板“Widget”新建一个form2. 在form中加入需要的控件,并对控件进行布局3. 进行信号和槽连接4. 如果还需要更多的信号和槽,可以在QWidget的派生类转载 2008-05-12 21:56:00 · 1759 阅读 · 0 评论 -
(转)双缓冲技术1
Rubber band(橡皮筋线,或者橡皮线), pixmap(图像,双缓冲中用到的图像,有时也直呼pixmap),off-screen pixmap(离线图像)Plot(plot,这一节实现的就是一个绘制曲线的控件Plotter,有时原文也叫plot,有点小名的意思,没有翻译,直接呼之)废话少说,以下是译文: 双缓冲技术是GUI编程中常用的技术。所谓的双缓冲就是把把一个需要渲染的转载 2008-05-20 20:32:00 · 2657 阅读 · 0 评论 -
(转)5.4 双缓冲技术(Double Buffering)-3
以下是Plotter控件的事件处理函数部分 void Plotter::paintEvent(QPaintEvent * /* event */){ QStylePainter painter(this); painter.drawPixmap(0, 0, pixmap); if (rubberBandIsShown) { painter.转载 2008-05-20 21:01:00 · 2487 阅读 · 0 评论 -
(转)5.4 双缓冲技术(Double Buffering)-4
以下是私有函数的实现: void Plotter::updateRubberBandRegion(){ QRect rect = rubberBandRect.normalized(); update(rect.left(), rect.top(), rect.width(), 1); update(rect.left(), rect.top(), 1, re原创 2008-05-20 21:05:00 · 3381 阅读 · 1 评论 -
(转)5.4 双缓冲技术(Double Buffering)-5
下面是PlotSettings的实现:PlotSettings::PlotSettings(){ minX = 0.0; maxX = 10.0; numXTicks = 5; minY = 0.0; maxY = 10.0; numYTicks = 5;}在构造函数中,把两个坐标轴的初始化为范围从0到10,分为5个刻转载 2008-05-20 21:10:00 · 1428 阅读 · 0 评论 -
(转)5.4 双缓冲技术(Double Buffering)-2
#include #include using namespace std;#include "plotter.h"以上代码为文件的开头,在这里把std的名空间加入到当前的全局命名空间。这样在使用里的函数时,就不用前缀std::了,如可以直接使用函数floor(),而不用写成std::floor()。 Plotter::Plotter(QWidget *parent转载 2008-05-20 20:36:00 · 1741 阅读 · 0 评论 -
(转)QT中画图方法的不同
void QWidget::update () [槽]更新窗口部件,除非更新已经失效或者窗口部件被隐藏。 这个函数不会导致一个立刻的重新绘制——更正确的是,当Qt回到主事件回路中时,它规划了所要处理的绘制事件。这样允许Qt来优化得到比调用repaint()更快的速度和更少的闪烁。几次调用update()的结果通常仅仅是一次paintEvent()调用。Qt通常在paintEvent转载 2009-06-18 11:15:00 · 4358 阅读 · 0 评论 -
(转)QT事件机制
什么是自发事件?哪些类型的事件可以被propagated 或compressed? posting and sending 事件之间有何不同?什么时候应该调用 accept() 或是ignore() ? 如果这些问题你还不是很了解,那么继续看下去。 事件起源:基于事件如何被产生与分发,可以把事件分为三类:* Spontaneous 事件,由窗口系统产生,它们被放到系统队列中,通过事件循环逐转载 2009-06-20 16:49:00 · 2137 阅读 · 2 评论 -
(转)4.3加载和保存(Loading and Saving)
我们使用自定义的二进制格式来实现Spreadsheet文件的保存和读取。我们用QFile和QDataStream这两个类来实现,它们一起提供了平台无关的二进制I/O。首先是保存文件的代码:bool Spreadsheet::writeFile(const QString &fileName){ QFile file(fileName); if (!file.op转载 2008-05-08 21:21:00 · 2644 阅读 · 0 评论 -
(转)4.1中央控件(The Central Widget)
在QMainWindow的中心区域可以放置各类控件。例如下面列举的:1、 使用标准Qt控件:标准的Qt控件如QTableWidget或者QTextEdit可以做为中央控件。这时,读取和保存文件等程序功能需要在其他地方实现(例如在QMainWindow的子类中)2、 使用用户自定义控件:一些特殊程序需要在一个用户自定义控件中显示数据。例如,图标编辑程序就要把IconEditor做为中央控转载 2008-05-06 21:16:00 · 1214 阅读 · 0 评论 -
(转)2.2 深入信号和槽
信号和槽是Qt编程的一个重要部分。这个机制可以在对象之间彼此并不了解的情况下将它们的行为联系起来。在前几个例子中,我们已经连接了信号和槽,声明了控件自己的信号和槽,并实现了槽函数,发送了自己的信号。现在来更深入了解这个机制。槽和普通的c++成员函数很像。它们可以是虚函数(virtual),也可被重载(overload),可以是公有的(public),保护的(protective),也可是私转载 2008-05-03 16:35:00 · 696 阅读 · 0 评论 -
(转)2.3快速设计对话框(Rapid Dialog Design)
通常程序员们都是用c++源代码编写Qt应用程序,Qt也是很容易用来编写的。然而,许多程序员更喜欢用可视化的方法设计对话框,这样能更快速更容易对对话框进行修改。Qt Designer满足了程序员的这一要求,提供了可视化设计对话框的方法。它可以给一个应用程序提供全部或者部分对话框。用Qt Designer设计的对话框和用c++代码写成的对话框是一样的,可以用做一个常用的工具,并不对编译器有什么特殊转载 2008-05-03 16:45:00 · 1267 阅读 · 0 评论 -
(转)2.6 Qt提供的控件和对话框类(Built-in Widget and Dialog Classes)
Qt提供了许多控件和对话框类,可以满足多种情况的需要。这一节将对它们进行介绍。有些特殊的控件如:主窗口类控件例如QMenuBar,QToolBar和QStatusBar在第三章介绍,与布局有关的如QSplitter和QScrollArea在第六章介绍。大部分Qt提供的控件和对话框都会在本书中出现。Qt提供四种方式的按钮: QPushButton, QToolButton, QCheckBo转载 2008-05-03 16:58:00 · 1238 阅读 · 0 评论 -
(转)1.1 Hello Qt
1 #include 2 #include 3 int main(int argc, char *argv[])4 {5 QApplication app(argc, argv);6 QLabel *label = new QLabel("Hello Qt!");7 label->show();8 return app.exec();9 }按行解析以上9行代码第转载 2008-05-03 14:32:00 · 938 阅读 · 0 评论 -
(转)1.3 控件的布局排列
在这个小节中,我们说明在一个窗口中如何对多个控件进行布局排列,以及学习利用信号和槽使控件同步。程序要求用户通过spin box或者slider输入年龄。程序中使用了三个控件:QSpinBox,QSlider和QWidget。QWidget是这个程序的主窗口。QSpinBox和QSlider被放在QWidget中;他们是QWidget的孩子。反过来,我们也可以称QWidget是QSpinBox和转载 2008-05-03 14:57:00 · 933 阅读 · 0 评论 -
(转)2.1 派生对话框类
第一个例子是一个用C++实现的查找对话框。我们把这个对话框实现为一个类,这样它就是一个独立的控件,并有自己的信号(signal)和slot函数类的源代码分别放在finddialog.h和finddialog.cpp中。首先看finddialog.h的代码1 #ifndef FINDDIALOG_H2 #define FINDDIALOG_H3 #include 4 class QChe转载 2008-05-03 16:14:00 · 934 阅读 · 0 评论 -
(转) 2.4形状能改变的对话框(Shape-Changing Dialogs)
前面几章我们设计的对话框都是不能改变它的样子的。但是有时需要对话框根据要求进行适当的改变。两个最常用的需要改变的对话框是可扩展对话框和多页对话框。这两种类型的可以通过代码编写,也可以用Qt Designer设计。可扩展对话框通常外观简单,带有一个可扩展按钮来切换对话框的简单外观和可扩展外观。这种对话框通常为了迎合普通用户和高端用户而设计的,如果没有特别请求隐藏高级应用部分。在这一节,我们使用Qt转载 2008-05-03 16:47:00 · 1172 阅读 · 0 评论 -
(转)2.5 动态对话框(Dynamic Dialogs)
动态对话框是在程序运行时用Qt Designer的.ui文件创建。而不是用uic工具把.ui文件转换为等价的c++代码,而是在运行时使用类QUiLoader加载.ui文件,例如下面的代码:QUiLoader uiLoader;QFile file("sortdialog.ui");QWidget *sortDialog = uiLoader.load(&file);if (sortDialog)转载 2008-05-05 21:03:00 · 1030 阅读 · 0 评论 -
(转)3.1从QMainWindow派生(Subclassing QMainWindow)
从QMainWindow的派生类创建应用程序的主窗口。第二章中介绍的用于创建对话框的技术也适合创建主窗口,因为QDialog与QMainWindow都是从QWidget派生。 可以用Qt Designer创建主窗口,但本章还是解释用代码如何创建。如果你喜欢使用可视化的工具,可以参考在线手册“Creating Main Windows in Qt Designer”。 下面是mainwi转载 2008-05-05 21:13:00 · 1006 阅读 · 0 评论 -
(转)3.2 创建菜单和工具栏(Creating Menus and Toolbars)
很多GUI程序都有菜单,上下文菜单,工具栏等。用户通过菜单浏览程序提供的所有功能。上下文菜单和工具栏能够使用户快速得到平时频繁使用的功能。Qt使用“行为”(action)这个概念来简化菜单和工具条的编程。一个“行为(action)”是一个可以加入任何菜单或者工具栏的项目。用Qt创建菜单和工具栏需要如下步骤:1、 建立行为(action)2、 创建菜单,并使它与一个行为关联3、转载 2008-05-05 21:36:00 · 1157 阅读 · 0 评论 -
(转)3.7多文档(Multiple Documents)
现在我们开始实现Spreadsheet程序的main()函数:include include "mainwindow.h"int main(int argc, char *argv[]){ QApplication app(argc, argv); MainWindow mainWin; mainWin.show(); return ap转载 2008-05-06 21:00:00 · 1414 阅读 · 0 评论 -
(转)3.6保存设置(Storing Settings)
在MainWindow构造函数中,我们调用readSettings()得到应用程序保存的设置选项。同样在closeEvent()中我们调用writeSettings()保存当前应用程序的设置。这是MainWindow需要实现的最后两个成员函数。void MainWindow::writeSettings(){ QSettings settings("Software Inc.转载 2008-05-06 20:56:00 · 1120 阅读 · 0 评论 -
(转)3.8启动画面(Splash Screens)
许多应用程序在启动时显示一个画面。在程序启动很慢时,程序员用这种方法可以让启动时间感觉不那么长,还有用这个画面满足市场的一些要求。给Qt应用程序加一个启动画面很简单,需要使用的类是QSplashScreen。在窗口没有显示之前,QSplashScreen显示一个图片,他还可以在图片上显示文字信息提示用户当前程序初始化的进度。一般情况下,启动画面代码放在main()函数中,加在QApplicat转载 2008-05-06 21:13:00 · 1135 阅读 · 1 评论 -
(转)3.5 使用对话框(Using Dialogs)
在这一节中,我们介绍Qt中对话框的调用:初始化对话框,显示对话框和与用户交互。我们将会使用在第二章创建的Find,Go-to-Cell对话框和Sort对话框。我们还会创建一个关于(About)对话框。首先我们看一下Find对话框。我们希望用户能够在Find对话框和Spreadsheet应用程序的主窗口之间自由切换,所以Find对话框应该是非模态的。一个非模态对话框就是在程序运行过程中不依赖转载 2008-05-06 20:54:00 · 1240 阅读 · 0 评论 -
(转)利用Qt的qmake创建vc工程
1 打开vc中的终端 开始 程序 Microsoft Visual Studio 2005 Visual Studio Tools Visual Studio 2005 命令提示 2 进入自己的源程序所在的工程目录,如c:/build/templatecd c:/build/templatec: 3 创建visual stu转载 2009-08-28 10:06:00 · 2414 阅读 · 0 评论