lv20 QT主窗口4

熟悉创建主窗口项目

1 QAction

2 主窗口

复制代码
菜单栏:fileMenu = menuBar()->addMenu(tr("&File"));
工具栏:fileToolBar = addToolBar(tr("File"));
浮动窗:QDockWidget *dockWidget 
		= new QDockWidget(tr("Dock Widget"), this);
	   addDockWidget(Qt::LeftDockWidgetArea, dockWidget);
中央部件:setCentralWidget(te);
状态栏:statusBar()->addWidget(progress);

示例

mainwindow.h

cpp 复制代码
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QAction>
#include <QTextEdit>
#include <QLabel>
#include <QFileDialog>
#include <QColorDialog>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();
public slots:
    void openf()
    {
        QString filename = QFileDialog::getOpenFileName();
        te->setText(filename);
    }

    void copyf()
    {
        te->copy();
    }

    void pastf()
    {
        te->paste();
    }

    void setcf()
    {
        QColor ccc = QColorDialog::getColor();
        te->setTextColor(ccc);
    }
private:
    QAction *openfileact, *copyfileact, *pastfileact, *setcoloract;

    //central
    QTextEdit *te;

    //status
    QLabel *slb;
};

#endif // MAINWINDOW_H

mainwindow.cpp

cpp 复制代码
#include "mainwindow.h"
#include <QMenu>
#include <QMenuBar>
#include <QToolBar>
#include <QStatusBar>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    // 创建动作并设置图标、快捷键
    openfileact = new QAction(QIcon("open.png"), "Open", this);
    openfileact->setShortcut(QKeySequence(tr("Ctrl+O")));

    copyfileact = new QAction(QIcon("copy.png"), "Copy", this);
    pastfileact = new QAction(QIcon("past.png"), "Paste", this);

    setcoloract = new QAction(QIcon("color.png"), "Set Color", this);

    // 创建菜单并添加动作
    QMenu *fileMenu = menuBar()->addMenu(tr("&File"));
    fileMenu->addAction(openfileact);

    QMenu *editMenu = menuBar()->addMenu(tr("&Edit"));
    editMenu->addAction(copyfileact);
    editMenu->addAction(pastfileact);

    QMenu *setMenu = menuBar()->addMenu(tr("&Set"));
    setMenu->addAction(setcoloract);

    // 创建工具栏并添加动作
    QToolBar *tfile = addToolBar("File");
    tfile->addAction(openfileact);

    QToolBar *tedit = addToolBar("Edit");
    tedit->addAction(copyfileact);
    tedit->addAction(pastfileact);

    QToolBar *tset = addToolBar("Set");
    tset->addAction(setcoloract);

    // 设置中央部件为文本编辑框
    te = new QTextEdit("hello", this);
    te->setMinimumSize(640, 480);
    setCentralWidget(te);

    // 添加状态栏
    slb = new QLabel("1.txt*", this);
    QStatusBar *stb = statusBar();
    stb->addWidget(slb);

    // 连接信号和槽
    connect(openfileact, &QAction::triggered, this, &MainWindow::openf);
    connect(copyfileact, &QAction::triggered, this, &MainWindow::copyf);
    connect(pastfileact, &QAction::triggered, this, &MainWindow::pastf);
    connect(setcoloract, &QAction::triggered, this, &MainWindow::setcf);

}

MainWindow::~MainWindow()
{

}
相关推荐
九转成圣1 小时前
Java 性能优化实战:如何将海量扁平数据高效转化为类目字典树?
java·开发语言·json
SmartRadio1 小时前
ESP32-S3 双模式切换实现:兼顾手机_路由器连接与WiFi长距离通信
开发语言·网络·智能手机·esp32·长距离wifi
laowangpython1 小时前
Rust 入门:GitHub 热门内存安全编程语言
开发语言·其他·rust·github
我叫汪枫1 小时前
在后台管理系统中,如何递归和选择保留的思路来过滤菜单
开发语言·javascript·node.js·ecmascript
_.Switch1 小时前
东方财富股票数据JS逆向:secids字段和AES加密实战
开发语言·前端·javascript·网络·爬虫·python·ecmascript
软件技术NINI1 小时前
webkit简介及工作流程
开发语言·前端·javascript·udp·ecmascript·webkit·yarn
Brendan_0011 小时前
JavaScript的Stomp.over
开发语言·javascript·ecmascript
念2341 小时前
f5 shape分析
开发语言·javascript·ecmascript
苍穹之跃1 小时前
某量JS逆向
开发语言·javascript·ecmascript
思茂信息1 小时前
CST软件如何进行参数化扫描?
运维·开发语言·javascript·windows·ecmascript·软件工程·软件需求