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的构造函数中,设置了窗口标题,图标、快捷键、提示,增加了菜单栏、工具栏和状态栏。


相关文章
|
1月前
|
Web App开发 存储 Linux
Linux(33)Rockchip RK3568 Ubuntu22.04上通过SSH运行Qt程序和关闭Chrome的密钥提示
Linux(33)Rockchip RK3568 Ubuntu22.04上通过SSH运行Qt程序和关闭Chrome的密钥提示
126 0
|
1月前
【QT】读写.ini配置文件的程序实现
【QT】读写.ini配置文件的程序实现
|
7月前
|
存储 Cloud Native Linux
C++Qt防止程序重复启动
C++Qt防止程序重复启动
|
1月前
|
开发框架 自然语言处理 Linux
Qt:构建强大跨平台应用程序的框架
Qt:构建强大跨平台应用程序的框架
|
1月前
|
C++
QT第一个程序命名空间详解,解释ui_widget的和xxx.cpp的联系
QT第一个程序命名空间详解,解释ui_widget的和xxx.cpp的联系
52 0
|
1月前
|
编译器
QT creator开发环境下 界面更改后运行程序不能实时更新或者在源文件添加该控件后无法编译的问题
在使用QT Creator开发界面的过程中,偶尔会出现添加控件后,运行程序后,界面控件无法更新的情况,或者在源文件使用该控件却出现无法编译的情况,使用QT Creator 4.8.2也会出现这个情况,也不知道这种情况会不会在以后有所改善。
91 0
|
1月前
|
人工智能 编译器 C++
新版Qt6快速打包程序脚本
不知道啥时候Qt更新了,目前是6.7.0,项目默认的生成路径改了, 从 项目目录的同级目录 改为了 项目目录中的build目录, 之前的脚本也用不了了,所以用AI更新了一下脚本, 希望能帮到大家,方便快速打包程序到桌面。
60 9
|
1月前
|
开发框架 Linux C++
Qt:强大的跨平台C++应用程序开发框架
Qt:强大的跨平台C++应用程序开发框架
72 3
|
1月前
|
开发框架 编译器 C++
Qt:一个强大的跨平台C++应用程序开发框架
Qt:一个强大的跨平台C++应用程序开发框架
60 1
|
1月前
|
数据可视化
实现Hello Qt 程序
实现Hello Qt 程序