change:行操作改成右键菜单栏的形式。

This commit is contained in:
taynpg 2024-05-16 13:17:49 +08:00
parent 726c42f537
commit 615a53f9cb
4 changed files with 98 additions and 101 deletions

View File

@ -96,6 +96,9 @@
"xtr1common": "cpp", "xtr1common": "cpp",
"xtree": "cpp", "xtree": "cpp",
"xutility": "cpp", "xutility": "cpp",
"qtablewidget": "cpp" "qtablewidget": "cpp",
"qmenu": "cpp",
"qmessagebox": "cpp",
"qaction": "cpp"
} }
} }

View File

@ -11,7 +11,7 @@ MainWidget::MainWidget(QWidget* parent) : QWidget(parent), ui(new Ui::MainWidget
{ {
ui->setupUi(this); ui->setupUi(this);
setWindowTitle(u8"OneLevelXmlOpr v1.2.3"); setWindowTitle(u8"OneLevelXmlOpr v1.2.4");
setWindowIcon(QIcon("://resource/xml.ico")); setWindowIcon(QIcon("://resource/xml.ico"));
setMinimumWidth(900); setMinimumWidth(900);
@ -26,22 +26,14 @@ MainWidget::MainWidget(QWidget* parent) : QWidget(parent), ui(new Ui::MainWidget
ui->edStatus->setEnabled(false); ui->edStatus->setEnabled(false);
ui->btnSave->setEnabled(false); ui->btnSave->setEnabled(false);
ui->btnCopySelectLine->setEnabled(false);
ui->btnDelSelectLine->setEnabled(false);
ui->edAllPage->setEnabled(false); ui->edAllPage->setEnabled(false);
ui->cbCaseSensitive->setChecked(true); ui->cbCaseSensitive->setChecked(true);
connect(ui->btnRead, &QPushButton::clicked, this, [&]() { read(); }); connect(ui->btnRead, &QPushButton::clicked, this, [&]() { read(); });
connect(ui->btnSearch, &QPushButton::clicked, this, [&]() { search(); }); connect(ui->btnSearch, &QPushButton::clicked, this, [&]() { search(); });
connect(ui->btnSave, &QPushButton::clicked, this, [&]() { save(); }); connect(ui->btnSave, &QPushButton::clicked, this, [&]() { save(); });
connect(ui->btnCopySelectLine, &QPushButton::clicked, this, [&]() { copy_select_line(); });
connect(ui->btnDelSelectLine, &QPushButton::clicked, this, [&]() { del_select_line(); });
connect(ui->btnExit, &QPushButton::clicked, this, [&]() { QApplication::exit(0); }); connect(ui->btnExit, &QPushButton::clicked, this, [&]() { QApplication::exit(0); });
connect(ui->btnReset, &QPushButton::clicked, this, &MainWidget::reset); connect(ui->btnReset, &QPushButton::clicked, this, &MainWidget::reset);
connect(ui->btnEditProperty, &QPushButton::clicked, this, [&]() {
Element_t* ele = get_current_select_key();
edit_property(ele);
});
connect(ui->btnPagePre, &QPushButton::clicked, this, [&]() { connect(ui->btnPagePre, &QPushButton::clicked, this, [&]() {
unsigned int cur = ui->edCurPage->text().toUInt(); unsigned int cur = ui->edCurPage->text().toUInt();
push_content(current_, cur - 1); push_content(current_, cur - 1);
@ -54,7 +46,6 @@ MainWidget::MainWidget(QWidget* parent) : QWidget(parent), ui(new Ui::MainWidget
unsigned int cur = ui->edCurPage->text().toUInt(); unsigned int cur = ui->edCurPage->text().toUInt();
push_content(current_, cur); push_content(current_, cur);
}); });
connect(ui->btnCopyKey, &QPushButton::clicked, this, &MainWidget::copy_key);
QSettings settings; QSettings settings;
settings.beginGroup("xmlopr"); settings.beginGroup("xmlopr");
@ -65,6 +56,8 @@ MainWidget::MainWidget(QWidget* parent) : QWidget(parent), ui(new Ui::MainWidget
if (qss_file.open(QFile::ReadOnly)) { if (qss_file.open(QFile::ReadOnly)) {
qApp->setStyleSheet(qss_file.readAll()); qApp->setStyleSheet(qss_file.readAll());
} }
init_menu();
} }
void MainWidget::copy_key() void MainWidget::copy_key()
@ -114,8 +107,9 @@ void MainWidget::set_work_exe(char* path)
void MainWidget::generate_table_widget() void MainWidget::generate_table_widget()
{ {
tab_widget_ = new QTableWidget(); tab_widget_ = new QTableWidget();
tab_widget_->setContextMenuPolicy(Qt::CustomContextMenu);
connect(tab_widget_, &QTableWidget::itemChanged, this, [&](QTableWidgetItem* item) { item_changed_handle(item); }); connect(tab_widget_, &QTableWidget::itemChanged, this, [&](QTableWidgetItem* item) { item_changed_handle(item); });
connect(tab_widget_, &QTableWidget::customContextMenuRequested, this, [&]() { context_menu_->exec(QCursor::pos()); });
auto config = ini_.get_config(); auto config = ini_.get_config();
auto keys = splitString(config.purpose, ","); auto keys = splitString(config.purpose, ",");
keys_.clear(); keys_.clear();
@ -226,8 +220,6 @@ void MainWidget::read()
ui->btnRead->setEnabled(false); ui->btnRead->setEnabled(false);
ui->btnSave->setEnabled(true); ui->btnSave->setEnabled(true);
ui->btnCopySelectLine->setEnabled(true);
ui->btnDelSelectLine->setEnabled(true);
} }
void MainWidget::search() void MainWidget::search()
@ -359,6 +351,28 @@ bool MainWidget::edit_property(Element_t* target)
return true; return true;
} }
void MainWidget::init_menu()
{
context_menu_ = new QMenu();
ac_edit_property_ = new QAction(u8"编辑");
ac_copy_curline_ = new QAction(u8"复制此项");
ac_del_curline_ = new QAction(u8"删除此项");
ac_copy_key_ = new QAction(u8"复制key");
context_menu_->addAction(ac_edit_property_);
context_menu_->addAction(ac_copy_curline_);
context_menu_->addAction(ac_del_curline_);
context_menu_->addAction(ac_copy_key_);
connect(ac_edit_property_, &QAction::triggered, this, [&]() {
Element_t* ele = get_current_select_key();
edit_property(ele);
});
connect(ac_copy_curline_, &QAction::triggered, this, [&]() { copy_select_line(); });
connect(ac_del_curline_, &QAction::triggered, this, [&]() { del_select_line(); });
connect(ac_copy_key_, &QAction::triggered, this, [&]() { copy_key(); });
}
void MainWidget::insert_one_line(Element_t* ele, int row) void MainWidget::insert_one_line(Element_t* ele, int row)
{ {
if (ele == nullptr) { if (ele == nullptr) {

View File

@ -3,6 +3,8 @@
#include <QWidget> #include <QWidget>
#include <QTableWidget> #include <QTableWidget>
#include <QMenu>
#include <QAction>
#include <QMessageBox> #include <QMessageBox>
#include "src/xml_opr.h" #include "src/xml_opr.h"
#include "src/config.h" #include "src/config.h"
@ -39,6 +41,7 @@ private:
void judge_btn_page(); void judge_btn_page();
void copy_key(); void copy_key();
bool edit_property(Element_t* target); bool edit_property(Element_t* target);
void init_menu();
protected: protected:
void closeEvent(QCloseEvent* event); void closeEvent(QCloseEvent* event);
@ -50,6 +53,11 @@ private:
QTableWidgetItem* get_current_select_item(); QTableWidgetItem* get_current_select_item();
private: private:
QMenu* context_menu_{};
QAction* ac_edit_property_{};
QAction* ac_copy_curline_{};
QAction* ac_del_curline_{};
QAction* ac_copy_key_{};
Ui::MainWidget* ui; Ui::MainWidget* ui;
ConfigIni ini_{}; ConfigIni ini_{};
CXmlOpr xml_{}; CXmlOpr xml_{};

View File

@ -6,84 +6,16 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>850</width> <width>790</width>
<height>794</height> <height>847</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
<string>MainWidget</string> <string>MainWidget</string>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QWidget" name="widget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLineEdit" name="edStatus"/>
</item>
<item>
<widget class="QPushButton" name="btnRead">
<property name="text">
<string>读取</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbCaseSensitive">
<property name="text">
<string>区分大小写</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="edSearchKey">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btnSearch">
<property name="text">
<string>搜索</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btnReset">
<property name="text">
<string>重置</string>
</property>
</widget>
</item>
</layout>
</item>
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout_2"> <layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item> <item>
<widget class="QLineEdit" name="edCurPage"> <widget class="QLineEdit" name="edCurPage">
<property name="sizePolicy"> <property name="sizePolicy">
@ -151,17 +83,33 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout> </layout>
</item> </item>
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout_3"> <widget class="QWidget" name="widget" native="true">
<item> <property name="sizePolicy">
<widget class="QPushButton" name="btnExit"> <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<property name="text"> <horstretch>0</horstretch>
<string>退出</string> <verstretch>0</verstretch>
</property> </sizepolicy>
</widget> </property>
</item> </widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item> <item>
<spacer name="horizontalSpacer_2"> <spacer name="horizontalSpacer_2">
<property name="orientation"> <property name="orientation">
@ -176,30 +124,47 @@
</spacer> </spacer>
</item> </item>
<item> <item>
<widget class="QPushButton" name="btnEditProperty"> <widget class="QLineEdit" name="edSearchKey">
<property name="text"> <property name="sizePolicy">
<string>编辑</string> <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="btnCopyKey"> <widget class="QCheckBox" name="cbCaseSensitive">
<property name="text"> <property name="text">
<string>复制Key</string> <string>区分大小写</string>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="btnCopySelectLine"> <widget class="QPushButton" name="btnSearch">
<property name="text"> <property name="text">
<string>复制选定行</string> <string>搜索</string>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="btnDelSelectLine"> <widget class="QPushButton" name="btnReset">
<property name="text"> <property name="text">
<string>删除选定行</string> <string>重置</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLineEdit" name="edStatus"/>
</item>
<item>
<widget class="QPushButton" name="btnRead">
<property name="text">
<string>加载文件</string>
</property> </property>
</widget> </widget>
</item> </item>
@ -210,6 +175,13 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="QPushButton" name="btnExit">
<property name="text">
<string>退出</string>
</property>
</widget>
</item>
</layout> </layout>
</item> </item>
</layout> </layout>