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()
{

}
相关推荐
韶博雅8 分钟前
开启补充日志
java·开发语言·sql
被怪兽吃掉了32 分钟前
5.2.1一维组数定义方式
开发语言·c++·算法
TheBestRucy40 分钟前
Python 九阳神功之肆:网络编程 · Socket 从入门到实战
开发语言·网络·python
j7~43 分钟前
【C++】《C++二叉搜索树(BST)从入门到精通:概念、实现与Key/Value模型全解析》
开发语言·c++·学习·二叉搜索树
hehelm1 小时前
仿muduo库实现高并发服务器—Channel类
linux·服务器·开发语言·网络·c++
末代iOS程序员华仔1 小时前
Codex + Figma 生成 Objective‑C (UIKit) 完整工作流
c语言·开发语言·figma
SomeB1oody1 小时前
【RustyML入门】7.3. 性能调优与并行
开发语言·后端·机器学习·rust·教程
余额瞒着我当琳1 小时前
C++STL--list底层实现,迭代器分类,模拟list的迭代器封装、实现
java·开发语言·c++
小陈的进阶之路1 小时前
Claude Code辅助测试:API测试与pytest自动化
android·开发语言·kotlin
denggun123451 小时前
Python两套原生信号量与swift对比
开发语言·python·swift