qt怎么获取主窗口对象?qt主窗口如何使用?

qt是比较流行的开发语言,在Qt里面可以创建很多的窗口,我们通过循环比较查找最上一层的窗口,这个最上面的窗口就是主窗口,那qt怎么获取主窗口对象?下面来我们就来给大家讲解一下。

这个问题,其实并不难。软件写法如下:

QMainWindow * getMainWindow()
{
    foreach(QWidget * w, qApp - > topLevelWidgets())
    if (QMainWindow * mainWin = qobject_cast < QMainWindow * > (w))
        return mainWin;
    return nullptr;
}

qt主窗口如何使用?

主窗口的基本元素:

qt怎么获取主窗口对象?qt主窗口如何使用?.jpg

1.菜单栏

菜单是一系列命令的列表。为了实现菜单、工具栏按钮、键盘快捷方式等命令的一致性,Qt使用动作(Action)来表示这些命令。Qt的菜单就是由一系列的QAction动作对象构成的列表,而菜单栏则是包容菜单的面板,它位于主窗口顶部、主窗口标题栏的下面。一个主窗口最多只有一个菜单栏。

2.动作QAction的实现

(1) QAction open =new QAction(QIcon("open.png"),tr("打开"),this);

在创建“打开文件”动作的并指定了此动作使用的图标、名称及父窗口。

(2) open ->setShortcut(tr("Ctrl+O"));

设置此动作的组合键为【Ctrl+O】。

(3) open ->setStatusTip(tr("打开一个文件"));

设置提示语,设定了状态栏显示,当鼠标光标移至此动作对应的菜单条目或工具栏按钮上时,在状态栏上显示“打开一个文件”的提示。

3.创建菜单按钮

QMenu* fileMenu =menuBar()->addMenu(tr("文件")); // 新建文件菜单
fileMenu-> addAction(open); // 添加动作
fileMenu->addSeparator(); // 添加分割线

4.状态栏

状态栏通常显示GUI应用程序的一些状态信息,它位于主窗口的底部。用户可以在状态栏上添加、使用Qt窗口部件。一个主窗口最多只有一个状态栏。

QStatusBar* m_StatusBar = new QStatusBar(this);
m_StatusBar->addWidget(m_LabelNetworkSpeed); // 添加在状态栏左边
m_StatusBar->addPermanentWidget(pLabel); // 添加在状态栏右边
m_StatusBar->showMessage("Status is here...", 3000); // 显示临时信息,时间3秒钟

5.工具栏

工具栏是由一系列的类似于按钮的动作排列而成的面板,它通常由一些经常使用的命令(动作)组成。工具栏位于菜单栏的下面、状态栏的上面,可以停靠在主窗口的上、下、左、右四个方向上。一个主窗口可以包含多个工具栏。

工具条是一个可移动的窗口,它可停靠的区域由QToolBar的allowAreas决定,包括Qt::LeftToolBarArea、Qt::RightToolBarArea、Qt::TopToolBarArea、Qt::BottomToolBarArea和Qt::AllToolBarAreas。默认为Qt::AllToolBarAreas,启动后默认出现于主窗口的顶部

QToolBar* fileTool =addToolBar("File"); // 添加工具栏
fileTool->setAllowedAreas(Qt::TopToolBarArea|Qt::LeftToolBarArea);// 
设置停靠区域
fileTool->setMovable(false); // 设置可移动性,true为可移动
fileTool->addAction(openFileAction); // 添加动作
fileTool->addSeparator(); // 添加分割线

6.锚接部件

锚接部件作为一个容器使用,以包容其他窗口部件来实现某些功能。例如,Qt设计器的属性编辑器、对象监视器等都是由锚接部件包容其他的Qt窗口部件来实现的。它位于工具栏区的内部,可以作为一个窗口自由地浮动在主窗口上面,也可以像工具栏一样停靠在主窗口的上、下、左、右四个方向上。一个主窗口可以包含多个锚接部件。

7.中心部件

中心部件处在锚接部件区的内部、主窗口的中心。一个主窗口只有一个中心部件。

这就是qt主窗口各区域的介绍,作为程序员我们一定要熟悉了解,这样才能熟练使用qt!最后大家如果想要了解更多json相关知识,敬请关注奇Q工具网。

推荐阅读:

json用什么软件编辑?怎样打开json?

java水电费管理系统如何设计?java水电费管理系统设计

java笔试编程题有哪些?java笔试编程题分享