简介
QApplication 类管理图形用户界面应用程序的控制流和主要设置。 可以说 QApplication是Qt的整个后台管理的命脉。
它包含主事件循环,在其中来自窗口系统和其它资源的所有事件被处理和调度。它也处理应用程序的初始化和结束,并且提供对话管理。它也处理绝大多数系统范围和应用程序范围的设置。
对于任何一个使用Qt的图形用户界面应用程序,都正好存在一个QApplication对象,而不论这个应用程序在同一时间内是不是有0、1、2或更多个窗口。
用法
QDesktopWidget * QApplication::desktop()
返回桌面信息。
QDesktopWidget *desktop = QApplication::desktop(); //桌面
int width=QApplication::desktop()->width(); //桌面宽度
int height=QApplication::desktop()->height(); //桌面高度
QWidgetList * QApplication::allWidgets()
返回应用程序中所有窗口部件的列表。
这个列表必须使用new来被创建并且必须被调用者删除。如果没有窗口部件,这个列表为空(QPtrList::isEmpty())。注意一些窗口部件也许被隐藏。
更新所有窗口部件的实例:
QWidgetList *list = QApplication::allWidgets();
QWidgetListIt it( *list ); // 遍历窗口部件
QWidget * w;
while ( (w=it.current()) != 0 ) { // 对于每一个窗口部件……
++it;
w->update();
}
delete list; // 删除这个列表,不是这个窗口部件
一旦你用完了这个列表,就删除它。列表中的窗口部件也许会在任何时候被其它删除。
int startDragDistance()
如果你在你的应用程序中支持拖放并且一个拖动应该在一个鼠标点击并且移动鼠标一定距离之后才开始,你应该使用这个方法返回的值作为那个距离。
例如,如果鼠标点击的位置被存储在startPos并且当前位置(例如,在鼠标移动事件中)是currPos,你可以发现拖动是否开始的代码如下:
if ((startPos - currentPos).manhattanLength() >=QApplication::startDragDistance())
startTheDrag();
QString QApplication::translate ( const char * context, const char * sourceText, const char * comment = 0, Encoding encoding = DefaultCodec ) const
通过查询安装的消息文件,返回sourceText的翻译文本。消息文件被搜索的顺序是从最近安装的开始到最先安装的。
context通常是一个类名(例如,“MyDialog”)并且sourceText是英语文本或者一个短的标识文本,如果输出文本很长(就像帮助文本那样的)。
comment是消除歧义的注释,当相同的sourceText在同样的上下文情况下被用在不同的规则中。默认情况下,它是零。encoding表明字符串的8位编码方式。
InputControl->setWindowTitle(QApplication::translate("InputControl", "Form", 0, QApplication::UnicodeUTF8));
QClipboard * QApplication::clipboard()
返回应用程序全局剪贴板的指针。
QClipboard *clipboard = QApplication::clipboard();
QString text = clipboard->text(); //获取剪切板的文本内容
void QApplication::restoreOverrideCursor()
撤销最近一次的setOverrideCursor()。
如果setOverrideCursor()已经被调用两次,调用restoreOverrideCursor()会激活第一个光标设置。第二次调用这个函数会恢复初始窗口部件的光标。
void setQuitOnLastWindowClosed(bool quit)
控制着当最后一个可视的窗口退出时候,程序是否退出,默认为是的。
如果使用app.setQuitOnLastWindowClosed(false);然后当该出窗口close以后,ps -e查看,我们发现应用程序仍旧在运行中,所以当此时,如果所有的窗口都响应了close(),那么application就退出了,如果窗口关闭,就返回TRUE,否则返回FALSE
QApplication::setQuitOnLastWindowClosed(false);
int QApplication::argc()
返回命令行参数的数量。
char** QApplication::argv()
返回命令行参数矢量。
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
}
QApplication对象是通过从main()函数传递的argc和argv被构造的。一些参数被作为Qt选项识别并且从参数矢量中移除。