瀏覽代碼

布局修改为消息框宽体

main
email 13 小時之前
父節點
當前提交
300344b935
共有 3 個檔案被更改,包括 54 行新增39 行删除
  1. +51
    -37
      untitled/mainwindow.cpp
  2. +2
    -1
      untitled/mainwindow.h
  3. +1
    -1
      untitled/untitled.pro.user

+ 51
- 37
untitled/mainwindow.cpp 查看文件

@@ -19,20 +19,39 @@
#include <QTextEdit>
#include <QDockWidget>
#include <QStatusBar>
#include<QLabel>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
setWindowTitle("综合平台编程器");
setGeometry(500, 200, 1000, 700);
m_tabWidget = new QTabWidget(this);// 初始化标签页
m_tabWidget->setTabsClosable(true);
setCentralWidget(m_tabWidget);
connect(m_tabWidget, &QTabWidget::currentChanged, this, &MainWindow::onTabChanged);
connect(m_tabWidget, &QTabWidget::tabCloseRequested, this, &MainWindow::onCloseTab);
createMenus();// 创建菜单和工具栏
createToolbars();
createLogPanel(); // 创建日志面板
setGeometry(500, 200, 1000, 700);

// 1. 先创建中央区域
QWidget* centralContainer = new QWidget;
QHBoxLayout* centralLayout = new QHBoxLayout(centralContainer);
centralLayout->setContentsMargins(0, 0, 0, 0);

// 2. 左侧工具栏区
createToolbars(); // 创建工具栏对象
centralLayout->addWidget(m_leftToolBar);

// 3. 中央文档区
m_tabWidget = new QTabWidget;
m_tabWidget->setTabsClosable(true);
centralLayout->addWidget(m_tabWidget, 1); // 占据剩余空间

// 4. 设置中央部件
setCentralWidget(centralContainer);

// 5. 创建日志面板
createLogPanel();

// 连接信号
connect(m_tabWidget, &QTabWidget::currentChanged, this, &MainWindow::onTabChanged);
connect(m_tabWidget, &QTabWidget::tabCloseRequested, this, &MainWindow::onCloseTab);

// 创建菜单
createMenus();
}

MainWindow::~MainWindow()
@@ -41,49 +60,44 @@ MainWindow::~MainWindow()

void MainWindow::createLogPanel()
{
// 创建可停靠窗口
m_logDock = new QDockWidget("消息输出", this);
// 设置为只能在底部停靠
m_logDock->setAllowedAreas(Qt::BottomDockWidgetArea);
m_logDock->setFeatures(QDockWidget::DockWidgetClosable |
QDockWidget::DockWidgetMovable |
QDockWidget::DockWidgetFloatable);

m_logDock->setMinimumHeight(150);//设置高度范围
m_logDock->setMinimumHeight(150);
m_logDock->setMaximumHeight(400);

QWidget* logWidget = new QWidget;// 创建主内容部件
QVBoxLayout* logLayout = new QVBoxLayout;
logLayout->setContentsMargins(2, 2, 2, 2);

m_logEdit = new QTextEdit;// 创建文本编辑框用于显示日志
// 创建日志编辑框(启用自定义菜单)
m_logEdit = new QTextEdit;
m_logEdit->setReadOnly(true);
m_logEdit->setFont(QFont("Consolas", 10));
m_logEdit->setStyleSheet("background-color: #f8f8f8; border: 1px solid #d9d9d9;");
m_logEdit->setMinimumHeight(100);

QHBoxLayout* btnLayout = new QHBoxLayout;// 创建控制按钮
m_clearLogBtn = new QPushButton("清空日志");

btnLayout->addWidget(m_clearLogBtn);
btnLayout->addStretch();

// 组合布局
logLayout->addLayout(btnLayout);
logLayout->addWidget(m_logEdit);
logWidget->setLayout(logLayout);
// 关键修改:启用自定义右键菜单
m_logEdit->setContextMenuPolicy(Qt::CustomContextMenu); // 禁用默认菜单[4,5](@ref)
connect(m_logEdit, &QTextEdit::customContextMenuRequested,
this, &MainWindow::showLogContextMenu); // 连接自定义菜单信号

m_logDock->setWidget(logWidget);
// 添加到底部dock区域,这会使它横跨整个窗口宽度
// 直接以日志编辑框作为面板内容
m_logDock->setWidget(m_logEdit);
addDockWidget(Qt::BottomDockWidgetArea, m_logDock);
}
void MainWindow::showLogContextMenu(const QPoint &pos)
{
QMenu menu; // 无需持久化,每次右键时创建

// 初始显示状态
m_logDock->show();
// 1. 添加“复制”功能(复用系统功能)
QAction* copyAction = menu.addAction("复制");
connect(copyAction, &QAction::triggered, m_logEdit, &QTextEdit::copy); // 直接调用QTextEdit的复制功能[2,5](@ref)

// 连接信号
connect(m_clearLogBtn, &QPushButton::clicked, this, &MainWindow::onClearLogButtonClicked);
}
// 2. 添加“清空日志”功能
QAction* clearAction = menu.addAction("清空日志");
connect(clearAction, &QAction::triggered, this, &MainWindow::onClearLogButtonClicked);

// 3. 显示菜单(无其他项)
menu.exec(m_logEdit->viewport()->mapToGlobal(pos)); // 精准显示在点击位置[4](@ref)
}
// 槽函数实现
void MainWindow::onClearLogButtonClicked()
{


+ 2
- 1
untitled/mainwindow.h 查看文件

@@ -32,9 +32,10 @@ private slots:
void onOpen(); // 打开文档
void onCloseTab(int index); // 关闭标签页
void onClearLogButtonClicked();
void showLogContextMenu(const QPoint &pos);
private:
void createMenus(); // 创建菜单栏
QWidget* m_logPanelContainer;
QDockWidget* m_logDock;
QTextEdit* m_logEdit;
QPushButton* m_clearLogBtn;


+ 1
- 1
untitled/untitled.pro.user 查看文件

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.11.1, 2025-08-11T21:25:16. -->
<!-- Written by QtCreator 4.11.1, 2025-08-12T21:46:20. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>


Loading…
取消
儲存