Qt入门(动作、布局管理器、菜工状)

来源:互联网 发布:网络禁书100本百度云 编辑:程序博客网 时间:2024/04/19 09:28

MainWindow

这里写图片描述

添加动作 QAction类

#include <QAction>#include <QMenuBar>#include <QToolBar>#include <QStatusBar>#include <QMessageBox>#include "mainwindow.h"#include "ui_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"));}

moc

  1. Qt 的 moc 预处理发生在标准 C++ 预处理器工作之前,并且 Qt 的 moc 预处理不是递归的
  2. QObject是以对象树的形式组织起来的。当你创建一个QObject对象时,会看到QObject的构造函数接收一个QObject指针作为参数,这个参数就是 parent,也就是父对象指针。
  3. QWidget是能够在屏幕上显示的一切组件的父类。QWidget继承自QObject。
  4. C++ 不允许调用两次析构函数

布局管理器

#include <QApplication>#include "mainwindow.h"#include <QSlider>#include <QSpinBox>#include <QHBoxLayout>int main(int argc, char *argv[]){    QApplication app(argc, argv);    QWidget window;    window.setWindowTitle("Enter your age");    QSpinBox *spinBox = new QSpinBox(&window);    QSlider *slider = new QSlider(Qt::Horizontal, &window);    spinBox->setRange(0, 130);    slider->setRange(0, 130);    QObject::connect(slider, &QSlider::valueChanged, spinBox, &QSpinBox::setValue);    void (QSpinBox:: *spinBoxSignal)(int) = &QSpinBox::valueChanged;    QObject::connect(spinBox, spinBoxSignal, slider, &QSlider::setValue);    spinBox->setValue(35);    QHBoxLayout *layout = new QHBoxLayout;    layout->addWidget(spinBox);    layout->addWidget(slider);    window.setLayout(layout);    window.show();    return app.exec();}

5种布局:
QHBoxLayout:按照水平方向从左到右布局;
QVBoxLayout:按照竖直方向从上到下布局;
QGridLayout:在一个网格中进行布局,类似于 HTML 的 table;
QFormLayout:按照表格布局,每一行前面是一段文本,文本后面跟随一个组件(通常是输入框),类似 HTML 的 form;
QStackedLayout:层叠的布局,允许我们将几个组件按照 Z 轴方向堆叠,可以形成向导那种一页一页的效果。

菜单栏工具栏状态栏

  1. 具体实例参见《添加动作》部分
  2. menuBar()是QMainWindow提供的函数,因此你是不会在QWidget或者QDialog中找到它的
  3. menuBar()等函数创建对象并返回
  4. QToolBar以及QStatusBar都是QWidget的子类,因此我们就可以将其结合布局管理器添加到另外的QWidget上面。QLayout布局提供了setMenuBar()函数,可以方便的添加菜单栏。
0 0
原创粉丝点击