码迷,mamicode.com
首页 > 其他好文 > 详细

Qt GUI@学习日志

时间:2015-06-08 00:57:33      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:

day 1:

Qt中类:

技术分享

理解一个类最好还是从其类代码实现上看。

由此图可看出需要好好研究那几个重要的类:Qt/QEvent/QObject/QWidget/。

QApplication: (比较复杂,且很常用)

  • 它使用用户的桌面设置,例如palette()、font()和doubleClickInterval()来初始化应用程序。如果用户改变全局桌面,例如通过一些控制面板,它会对这些属性保持跟踪。
  • 它执行事件处理,也就是说它从低下的窗口系统接收事件并且把它们分派给相关的窗口部件。通过使用sendEvent()和postEvent(),你可以发送你自己的事件到窗口部件。
  • 它分析命令行参数并且根据它们设置内部状态。关于这点的详细情况请参考下面的构造函数文档
  • 它定义了由QStyle对象封装的应用程序的观感。在运行状态下,可以通过setStyle()来改变。
  • 它指定了应用程序如何分配颜色。详细情况请参考setColorSpec()。
  • 它定义了默认文本编码(请参考setDefaultCodec())并且提供了通过translate()用户可见的本地化字符串。
  • 它提供了一些像desktop()和clipboard()这样的魔术般的对象。
  • 它知道应用程序的窗口。你可以使用widgetAt()来询问在一个确定点上存在哪个窗口部件,得到一个topLevelWidgets()(顶级窗口部件)的列表和通过closeAllWindows()来关闭所有窗口,等等。
  • 它管理应用程序的鼠标光标处理,请参考setOverrideCursor()和setGlobalMouseTracking()。
  • 在X窗口系统上,它提供刷新和同步通讯流的函数,请参考flushX()和syncX()。
  • 它提供复杂的对话管理支持。这使得当用户注销时,它可以让应用程序很好地结束,如果无法终止,撤消关闭进程并且甚至为未来的对话保留整个应用程序的状态。详细情况请参考isSessionRestored()、sessionId()、commitData()和saveState()。 

app.exec();

进入主事件循环并且等待,直到exit()被调用或者主窗口部件被销毁,并且返回值被设置为exit()(如果通过quit(),exit()被调用,为0)。 

QLabel: 提供文本和图片的显示功能。还可以设置显示格式等。

QObject: 是所有Qt对象的基类。

 

QMainWindow: 提供一个有菜单条、锚接窗口(例如工具条)和一个状态条的主应用程序窗口。主窗口通常用在提供一个大的中央窗口部件(例如文本编辑或者绘制画布)以及周围菜单、工具条和一个状态条。QMainWindow常常被继承,因为这使得封装中央部件、菜单和工具条以及窗口状态变得更容易。继承使创建当用户点击菜单项或者工具条按钮时被调用的槽成为可能。

QWidget: QWidget类是所有用户界面对象的基类。

  • 窗口部件是用户界面的一个原子:它从窗口系统接收鼠标、键盘和其它事件,并且在屏幕上绘制自己的表现。每一个窗口部件都是矩形,并且它们按Z轴顺序排列的。一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分。
  • QDialog是最普通的顶级窗口。不被嵌入到一个父窗口部件的窗口部件被叫做顶级窗口部件。通常情况下,顶级窗口部件是有框架和标题栏的窗口(尽管如果使用了一定的窗口部件标记,创建顶级窗口部件时也可能没有这些装饰。)在Qt中,QMainWindow和和不同的QDialog的子类是最普通的顶级窗口。
  • 一个没有父窗口部件的窗口部件一直是顶级窗口部件。
  • 非顶级窗口部件是子窗口部件。它们是它们的父窗口部件中的子窗口。你通常不能在视觉角度从它们的父窗口部件中辨别一个子窗口部件。在Qt中的绝大多数其它窗口部件仅仅作为子窗口部件才是有用的。(当然把一个按钮作为或者叫做顶级窗口部件也是可能的,但绝大多数人喜欢把他们的按钮放到其它按钮当中,比如QDialog。)
  • QWidget有很多成员函数,但是它们中的一些有少量的直接功能:例如,QWidget有一个字体属性,但是它自己从来不用。有很多继承它的子类提供了实际的功能,比如QPushButtonQListBoxQTabDialog等等。

C++父类与子类转换

QMainWindow *mw = new QMainWindow;
QTextEdit *edit = new QTextEdit( mw, "editor" ); //子类类型强制转换为父类类型
                              //mw是QMainWindow类型,继承自QWidget,但是mw位子要求QWidget* edit->setFocus(); mw->setCaption( "Main Window" ); mw->setCentralWidget( edit ); mw->show();

子类可以转换为父类,但是父类不可转换为子类(想想继承的过程就明白了);子类转换为父类,子类特有的数据丢失。

如果父类对象的引用指向的实际是一个子类的对象,那么父类对象的引用可以强制转化成子类对象的引用。如:   
  Parent   p=new   Son()   //父类对象引用指向子类的对象;
  Son   s=(Son)p;  --正确

  Parent   p=new   Parent()   //父类对象引用指向父类的对象;
  Son   s=(Son)p;  --错误

 

Qt GUI@学习日志

标签:

原文地址:http://www.cnblogs.com/kwseeker-bolgs/p/4559726.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!