Qt MainWindow 程序主窗口

简介: Qt MainWindow 程序主窗口

QMainWindow 是Qt预定义的一个 主窗口类。

 

下面创建一个主窗口

先新建一个工程。选择桌面应用程序,然后默认,完成创建工程。

#include "mainwindow.h"
#include <QApplication>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
 
    return a.exec();
}

运行,生成一个窗口

这个就是 程序主窗口

 

它实现窗口的最基本的功能(最小化、放大、关闭等),但是显然我们还要在上面添加自己的功能。

 

添加动作

QAction 类是动作。这个类代表了窗口的一个“动作”,比如用户点击菜单时,程序做出响应。

QAction 包含了图标、菜单文字、快捷键等信息。//(当把QAction对象添加到程序中时,Qt自动选择用哪个属性表示)

下面来使用QAction

在MainWindow中使用QAction:

mainwindow.h

说明:在类MainWindow中添加了private函数open()和private变量 openAction

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
     MainWindow(QWidget *parent = 0);
    ~MainWindow();
 
private:
    void open();
 
    QAction *openAction;
};
 
#endif // MAINWINDOW_H

mainwindow.cpp

说明:

在MainWindow的构造函数中,第一行调用setWindowTitle()来设置标题 //先忽略tr函数的意思

然后创建openAction 对象,传入了一个图标QIcon(“图标路径”),一个文本,前面有& 意味着将成为快捷键(),一个指针(此处先略过) //这里图标可能显示有问题(显示空白),不过不影响,先跳过去

下一行使用setShortcuts()来说明这个快捷键,QKeySequence定义了很多快捷键,直接用它的Open。

下一行使用setStatusTip,当鼠标移动到这个action时,在窗口下方显示提示。

之后用connect连接

下面的menuBar()toolBar()statusBar()三个是QMainWindow的函数,用于创建并返回菜单栏、工具栏和状态栏。

#include <QAction>
#include <QMenuBar>
#include <QMessageBox>
#include <QStatusBar>
#include <QToolBar>
 
#include "mainwindow.h"
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent)
{
    setWindowTitle(tr("Main Window"));
 
    openAction = new QAction(QIcon(":/images/doc-open"), tr("&Open..."), this);
    openAction->setShortcuts(QKeySequence::Open);
    openAction->setStatusTip(tr("Open an existing file"));
    connect(openAction, &QAction::triggered, this, &MainWindow::open);
 
    QMenu *file = menuBar()->addMenu(tr("&File"));
    file->addAction(openAction);
 
    QToolBar *toolBar = addToolBar(tr("&File"));
    toolBar->addAction(openAction);
 
    statusBar() ;
}
 
MainWindow::~MainWindow()
{
}
 
void MainWindow::open()
{
    QMessageBox::information(this, tr("Information"), tr("Open"));
}

main.cpp

#include "mainwindow.h"
#include <QApplication>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow win;
    win.show();
 
    return a.exec();
}

小结:

Qt MainWindow类 是程序的主窗口。

给MainWindow设置属性可改变主窗口,

给MainWindow添加动作(QAction)让程序做出响应。

在这个例子中,

在类MainWindow中添加了private函数open()和private变量 openAction,即添加打开动作。

在类MainWindow的构造函数中,设置了窗口标题,图标、快捷键、提示,增加了菜单栏、工具栏和状态栏。


相关文章
|
7月前
|
Web App开发 存储 Linux
Linux(33)Rockchip RK3568 Ubuntu22.04上通过SSH运行Qt程序和关闭Chrome的密钥提示
Linux(33)Rockchip RK3568 Ubuntu22.04上通过SSH运行Qt程序和关闭Chrome的密钥提示
457 0
|
7月前
【QT】读写.ini配置文件的程序实现
【QT】读写.ini配置文件的程序实现
112 0
|
5月前
|
Linux iOS开发 开发者
Qt问题(二):无法定位程序输入点于动态链接库
动态链接库(Dynamic Link Library,简称DLL)是一种可执行文件格式,常见于Windows操作系统中,而在Linux和macOS等其他操作系统中,相似的概念通常被称为共享库(Shared Library)。动态链接库允许程序在运行时加载所需的代码和数据,而不是在编译时静态链接到应用程序中。这种方式带来了几个重要的优点:
473 3
|
3月前
|
C语言 Android开发 C++
基于MTuner软件进行qt的mingw编译程序的内存泄漏检测
本文介绍了使用MTuner软件进行Qt MinGW编译程序的内存泄漏检测的方法,提供了MTuner的下载链接和测试代码示例,并通过将Debug程序拖入MTuner来定位内存泄漏问题。
基于MTuner软件进行qt的mingw编译程序的内存泄漏检测
|
7月前
|
开发框架 自然语言处理 Linux
Qt:构建强大跨平台应用程序的框架
Qt:构建强大跨平台应用程序的框架
|
5月前
|
调度
【浅入浅出】Qt多线程机制解析:提升程序响应性与并发处理能力
在学习QT线程的时候我们首先要知道的是QT的主线程,也叫GUI线程,意如其名,也就是我们程序的最主要的一个线程,主要负责初始化界面并监听事件循环,并根据事件处理做出界面上的反馈。但是当我们只限于在一个主线程上书写逻辑时碰到了需要一直等待的事件该怎么办?它的加载必定会带着主界面的卡顿,这时候我们就要去使用多线程。
160 6
|
7月前
|
C++
QT第一个程序命名空间详解,解释ui_widget的和xxx.cpp的联系
QT第一个程序命名空间详解,解释ui_widget的和xxx.cpp的联系
115 0
|
7月前
|
编译器
QT creator开发环境下 界面更改后运行程序不能实时更新或者在源文件添加该控件后无法编译的问题
在使用QT Creator开发界面的过程中,偶尔会出现添加控件后,运行程序后,界面控件无法更新的情况,或者在源文件使用该控件却出现无法编译的情况,使用QT Creator 4.8.2也会出现这个情况,也不知道这种情况会不会在以后有所改善。
303 0
|
7月前
|
人工智能 编译器 C++
新版Qt6快速打包程序脚本
不知道啥时候Qt更新了,目前是6.7.0,项目默认的生成路径改了, 从 项目目录的同级目录 改为了 项目目录中的build目录, 之前的脚本也用不了了,所以用AI更新了一下脚本, 希望能帮到大家,方便快速打包程序到桌面。
165 9