📄 qapplication.html
字号:
</h3>
如果有未处理的事件,这个函数返回真,否则返回假。未处理的事件可以是来自于窗口系统,也可以是使用<a href="#postEvent">QApplication::postEvent</a>()发送的事件。
<h3 class=fn>int <a name="horizontalAlignment"></a>QApplication::horizontalAlignment ( int align )<tt> [静态]</tt>
</h3>
<p> 去掉垂直对齐标记并且根据使用的语言把AlignAuto的对齐方式<em>align</em>转换为AlignLeft或者AlignRight。其它水平对齐标记不被改变而留下。
<h3 class=fn>void <a name="installTranslator"></a>QApplication::installTranslator ( <a href="qtranslator.html">QTranslator</a> * mf )
</h3>
添加消息文件<em>mf</em>到翻译所用的消息文件列表。
<p> 可以安装多种消息文件。翻译会在最后安装的消息文件中搜索,然后是紧接着最后的,并且继续,一直到最先安装的。一旦找到匹配的翻译,搜索就停止。
<p> <p>也可以参考<a href="#removeTranslator">removeTranslator</a>()、<a href="#translate">translate</a>()和<a href="qtranslator.html#load">QTranslator::load</a>()。
<p>实例:<a href="i18n-example.html#x1919">i18n/main.cpp</a>。
<h3 class=fn>bool <a name="isEffectEnabled"></a>QApplication::isEffectEnabled ( <a href="qt.html#UIEffect-enum">Qt::UIEffect</a> effect )<tt> [静态]</tt>
</h3>
如果<em>effect</em>生效,返回真,否则返回假。
<p> 默认,Qt将视图使用桌面设置。调用<a href="#setDesktopSettingsAware">setDesktopSettingsAware</a>(FALSE)可以防止这一点。
<p> <p>也可以参考<a href="#setEffectEnabled">setEffectEnabled</a>()和<a href="qt.html#UIEffect-enum">Qt::UIEffect</a>。
<h3 class=fn>bool <a name="isSessionRestored"></a>QApplication::isSessionRestored () const
</h3>
<p> 如果应用程序已经从以前的对方中恢复,返回真,否则返回假。
<p> <p>也可以参考<a href="#sessionId">sessionId</a>()、<a href="#commitData">commitData</a>()和<a href="#saveState">saveState</a>()。
<h3 class=fn>void <a name="lastWindowClosed"></a>QApplication::lastWindowClosed ()<tt> [信号]</tt>
</h3>
<p> 当用户关闭最后一个顶级窗口时,这个信号被发射。
<p> 当你的应用程序有很多顶级窗口部件,而没有主窗口部件时,这个信号很有用。你可以把它和<a href="#quit">quit</a>()槽连接起来。
<p> 为了方便,对于短暂的顶级窗口部件,例如弹出菜单和对话框,这个信号<em>不</em>被发射。
<p> <p>也可以参考<a href="#mainWidget">mainWidget</a>()、<a href="#topLevelWidgets">topLevelWidgets</a>()、<a href="qwidget.html#isTopLevel-prop">QWidget::isTopLevel</a>和<a href="qwidget.html#close">QWidget::close</a>()。
<p>实例:<a href="qaction-application-example.html#x1100">action/main.cpp</a>、<a href="addressbook-example.html#x556">addressbook/main.cpp</a>、<a href="tutorial2-04.html#x2463">chart/main.cpp</a>、<a href="helpviewer-example.html#x1042">helpviewer/main.cpp</a>、<a href="qwerty-example.html#x414">qwerty/main.cpp</a>和<a href="showimg-example.html#x1297">showimg/main.cpp</a>。
<h3 class=fn><a href="qstringlist.html">QStringList</a> <a name="libraryPaths"></a>QApplication::libraryPaths ()<tt> [静态]</tt>
</h3>
返回当动态载入库的时候,应用程序将搜索的路径列表。如果没有路径被设置,<tt>$QTDIR/plugins</tt>将作为唯一的条目被返回。
<p> 如果你想遍历这个列表,你应该遍历一个复制,例如:
<pre>
<a href="qstringlist.html">QStringList</a> list = app.libraryPaths();
QStringList::Iterator it = list.<a href="qvaluelist.html#begin">begin</a>();
while( it != list.<a href="qvaluelist.html#end">end</a>() ) {
myProcessing( *it );
++it;
}
</pre>
<p> 关于如何使用库路径的详细情况请参考<a href="plugins-howto.html">插件文档</a>。
<p> <p>也可以参考<a href="#setLibraryPaths">setLibraryPaths</a>()、<a href="#addLibraryPath">addLibraryPath</a>()、<a href="#removeLibraryPath">removeLibraryPath</a>()和<a href="qlibrary.html">QLibrary</a>。
<h3 class=fn>void <a name="lock"></a>QApplication::lock ()
</h3>
<p> 锁住Qt库互斥量。如果另外一个线程已经锁住这个互斥量,那么这个调用线程将会阻塞,直到其它线程对这个互斥量解锁。
<p> <p>也可以参考<a href="#unlock">unlock</a>()、<a href="#locked">locked</a>()和<a href="threads.html">Qt中的线程支持</a>。
<h3 class=fn>bool <a name="locked"></a>QApplication::locked ()
</h3>
<p> 如果Qt库互斥量被不同的线程锁住,返回真,否则返回假。
<p> <b>警告:</b>由于在被支持的平台上,递归互斥量的实现不同,在以前锁住互斥量的同一个线程中调用这个函数将会给出不确定的结果。
<p> <p>也可以参考<a href="#lock">lock</a>()、<a href="#unlock">unlock</a>()和<a href="threads.html">Qt中的线程支持</a>。
<h3 class=fn>int <a name="loopLevel"></a>QApplication::loopLevel () const
</h3>
返回当前循环水平。
<p> <p>也可以参考<a href="#enter_loop">enter_loop</a>()和<a href="#exit_loop">exit_loop</a>()。
<h3 class=fn>bool <a name="macEventFilter"></a>QApplication::macEventFilter ( EventRef )<tt> [虚]</tt>
</h3>
这个虚函数只在Macintosh下被实现。
<p> 如果你创建一个继承QApplication并且重新实现这个函数的应用程序,你可以直接访问从Mac OS接收的所有Carbon事件。
<p> 如果你想停止正在处理的事件,返回真。对于普通事件分派,返回假。
<h3 class=fn><a href="qwidget.html">QWidget</a> * <a name="mainWidget"></a>QApplication::mainWidget () const
</h3>
<p> 返回主应用程序窗口部件,如果没有主窗口部件,返回0。
<p> <p>也可以参考<a href="#setMainWidget">setMainWidget</a>()。
<h3 class=fn>bool <a name="notify"></a>QApplication::notify ( <a href="qobject.html">QObject</a> * receiver, <a href="qevent.html">QEvent</a> * e )<tt> [虚]</tt>
</h3>
把事件<em>e</em>发送给<em>receiver</em>:<em>receiver</em>->event(<em>e</em>)。返回接收者的事件处理器返回值。
<p> 对于确定类型的事件(例如鼠标和键盘事件),如果接收者对这个事件没有兴趣(也就是说它返回假),事件将被传播给接收者的父对象一直到顶级对象。
<p> 这里有事件被处理的五种不同方法,重新实现这个函数是其中的一个。所有这五种途径如下:
<ol type=1>
<li> 重新实现这个函数。这是一个非常强大,提供了完整控制,但只能是qApp的子类。
<p> <li> 在qApp上安装事件过滤器。这样的事件过滤器可以为所有窗口部件处理所有的事件,所以它和重新实现<a href="#notify">notify</a>()一样强大;此外,可以有超过一个的应用程序全局事件过滤器。全局事件过滤器甚至可以看到<a href="qwidget.html#isEnabled">失效的窗口部件</a>的鼠标事件,并且如果<a href="#setGlobalMouseTracking">全局鼠标跟踪</a>生效,它可以见到所有窗口部件的鼠标移动事件。
<p> <li> 重新实现<a href="qobject.html#event">QObject::event</a>()(就像<a href="qwidget.html">QWidget</a>做的那样)。如果你这样做来得到Tab键按下,并且你会在任何窗口部件特定的事件过滤器之前看到这个事件。
<p> <li> 在一个对象中安装事件过滤器。这样的事件过滤器可以得到除了Tab和Shift-Tab键按下之外的所有事件。
<p> <li> 重新实现paintEvent()、mousePressEvent()和其它。这是最普通、最容易并且最不强大的方式。
</ol>
<p> <p>也可以参考<a href="qobject.html#event">QObject::event</a>()和<a href="qobject.html#installEventFilter">installEventFilter</a>()。
<h3 class=fn><a href="qcursor.html">QCursor</a> * <a name="overrideCursor"></a>QApplication::overrideCursor ()<tt> [静态]</tt>
</h3>
<p> 返回激活的应用程序强制光标。
<p> 如果没有应用程序关标被指定(也就是说内部光标栈为空),这个函数返回0。
<p> <p>也可以参考<a href="#setOverrideCursor">setOverrideCursor</a>()和<a href="#restoreOverrideCursor">restoreOverrideCursor</a>()。
<h3 class=fn><a href="qpalette.html">QPalette</a> <a name="palette"></a>QApplication::palette ( const <a href="qwidget.html">QWidget</a> * w = 0 )<tt> [静态]</tt>
</h3>
返回默认应用程序调色板的指针。这个一直是应用程序的调色板,也就是说返回的指针被保证为非零。
<p> 如果被传递的窗口部件<em>w</em>,返回这个窗口部件的默认调色板。这个可能是,也可能不是应用程序调色板。在绝大多数情况下,普通类型的窗口部件没有特殊调色板,但是一个需要注意的例外是在Windows下的弹出菜单,如果用户在显示设置中为菜单定义了特定背景色。
<p> <p>也可以参考<a href="#setPalette">setPalette</a>()和<a href="qwidget.html#palette-prop">QWidget::palette</a>。
<p>实例:<a href="desktop-example.html#x1761">desktop/desktop.cpp</a>、<a href="themes-example.html#x225">themes/metal.cpp</a>和<a href="themes-example.html#x146">themes/wood.cpp</a>。
<h3 class=fn>void <a name="polish"></a>QApplication::polish ( <a href="qwidget.html">QWidget</a> * w )<tt> [虚]</tt>
</h3>
在窗口部件<em>w</em>被显示<em>之前</em>,初始化它的外观。
<p> 通常当窗口部件被抛光时,它们会自动调用这个函数。它也可以被用来做窗口部件的基于风格的主要定制。
<p> 注意你不会被<a href="qwidget.html">QWidget</a>的公有函数限制。相反,基于像<a href="qobject.html#className">QObject::className</a>()这些元信息,你可以对任何种类的窗口部件进行定制。
<p> <p>也可以参考<a href="qstyle.html#polish">QStyle::polish</a>()、<a href="qwidget.html#polish">QWidget::polish</a>()、<a href="#setPalette">setPalette</a>()和<a href="#setFont">setFont</a>()。
<h3 class=fn>void <a name="postEvent"></a>QApplication::postEvent ( <a href="qobject.html">QObject</a> * receiver, <a href="qevent.html">QEvent</a> * event )<tt> [静态]</tt>
</h3>
把事件<em>event</em>添加为对象<em>receiver</em>的接收对象,把它添加到事件队列中并且立即返回。
<p> 这个时间必须在堆中被分配,因为递送事件队列将会得到事件的所有权并且一旦它被递送就删除它。
<p> 当控制返回主事件循环,存储在队列中的所有事件将被使用<a href="#notify">notify</a>()函数发送。
<p> <p>也可以参考<a href="#sendEvent">sendEvent</a>()、<a href="qthread.html#postEvent">QThread::postEvent</a>()和<a href="#notify">notify</a>()。
<h3 class=fn>void <a name="processEvents"></a>QApplication::processEvents ()
</h3>
处理未处理的事件,在3秒内或者直到没有没有更多的事件要处理,看哪一个更短。
<p> 偶尔当你的程序很忙来处理一个长期操作(例如,复制文件),你可以调用这个函数。
<p> <p>也可以参考<a href="#exec">exec</a>()和<a href="qtimer.html">QTimer</a>。
<p>实例:<a href="fileiconview-example.html#x805">fileiconview/qfileiconview.cpp</a>。
<h3 class=fn>void <a name="processEvents-2"></a>QApplication::processEvents ( int maxtime )
</h3>
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
<p> 处理未处理的事件,在<em>maxtime</em>毫秒内或者直到没有没有更多的事件要处理,看哪一个更短。
<p> 偶尔当你的程序很忙来处理一个长期操作(例如,复制文件),你可以调用这个函数。
<p> <p>也可以参考<a href="#exec">exec</a>()和<a href="qtimer.html">QTimer</a>。
<h3 class=fn>void <a name="processOneEvent"></a>QApplication::processOneEvent ()
</h3>
等待一个事件的发生,处理它,然后返回。
<p> 这个函数对于使Qt能够适应事件处理必须移植到已经存在的程序循环中很有用处。
<p> 在新的应用程序中使用这个函数可能意味着设计的问题。
<p> <p>也可以参考<a href="#processEvents">processEvents</a>()、<a href="#exec">exec</a>()和<a href="qtimer.html">QTimer</a>。
<h3 class=fn>void <a name="quit"></a>QApplication::quit ()<tt> [槽]</tt>
</h3>
告诉应用程序退出,并且返回代码为0(成功)。相当于调用<a href="#exit">QApplication::exit</a>( 0 )。
<p> 把<a href="#lastWindowClosed">lastWindowClosed</a>()信号和<a href="#quit">quit</a>()连接起来是很普通的,并且你也可以经常把比如<a href="qbutton.html#clicked">QButton::clicked</a>()或者<a href="qaction.html">QAction</a>、<a href="qpopupmenu.html">QPopupMenu</a>或<a href="qmenubar.html">QMenuBar</a>中的信号和它连接起来。
<p> 实例:
<pre>
<a href="qpushbutton.html">QPushButton</a> *quitButton = new <a href="qpushbutton.html">QPushButton</a>( "Quit" );
<a href="qobject.html#connect">connect</a>( quitButton, SIGNAL(<a href="qbutton.html#clicked">clicked</a>()), qApp, SLOT(<a href="#quit">quit</a>()) );
</pre>
<p> <p>也可以参考<a href="#exit">exit</a>()、<a href="#aboutToQuit">aboutToQuit</a>()、<a href="#lastWindowClosed">lastWindowClosed</a>()和<a href="qaction.html">QAction</a>。
<p>实例:<a href="addressbook-example.html#x557">addressbook/main
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -