完善‘链接信息’编辑逻辑,请假链接列表双击打开操作

This commit is contained in:
duanshengchao 2025-05-23 17:55:00 +08:00
parent 66a506c29b
commit bb524a1655
8 changed files with 538 additions and 4 deletions

View File

@ -26,6 +26,7 @@ set(H_HEADER_FILES
include/dbStructureModel.h include/dbStructureModel.h
include/dbStructureView.h include/dbStructureView.h
include/connectionDialog.h include/connectionDialog.h
include/connInfoEditDialog.h
include/messageDialog.h include/messageDialog.h
include/messageBox.h include/messageBox.h
include/settings.h include/settings.h
@ -59,6 +60,7 @@ set(CPP_SOURCE_FILES
source/dbStructureModel.cpp source/dbStructureModel.cpp
source/dbStructureView.cpp source/dbStructureView.cpp
source/connectionDialog.cpp source/connectionDialog.cpp
source/connInfoEditDialog.cpp
source/messageDialog.cpp source/messageDialog.cpp
source/messageBox.cpp source/messageBox.cpp
source/settings.cpp source/settings.cpp
@ -84,6 +86,7 @@ set(UI_FILES
ui/mainwindow.ui ui/mainwindow.ui
ui/dbBrowser.ui ui/dbBrowser.ui
ui/connectionDialog.ui ui/connectionDialog.ui
ui/connInfoEditDialog.ui
ui/messageDialog.ui ui/messageDialog.ui
ui/modelInfoEditDialog.ui ui/modelInfoEditDialog.ui
ui/textEditWidget.ui ui/textEditWidget.ui

View File

View File

@ -60,6 +60,7 @@ public slots:
void onBtnClicked_remove(); void onBtnClicked_remove();
void onComboxChanged_dbType(const QString&); void onComboxChanged_dbType(const QString&);
void onTableCellClicked_connList(int, int); void onTableCellClicked_connList(int, int);
void onTableCellDbClicked_connList(int, int);
}; };
#endif // CONNECTIONDIALOG_H #endif // CONNECTIONDIALOG_H

View File

View File

@ -47,6 +47,7 @@ void ConnectionDialog::showEvent(QShowEvent* e)
QString connID = item->data(Qt::UserRole + itemID).toString(); QString connID = item->data(Qt::UserRole + itemID).toString();
loadConnInfo(connID); loadConnInfo(connID);
m_curConnListRow = 0; m_curConnListRow = 0;
ui->btnSave->setEnabled(false);
} }
QDialog::showEvent(e); QDialog::showEvent(e);
@ -59,7 +60,7 @@ void ConnectionDialog::closeEvent(QCloseEvent* e)
if(m_pMainWindow) if(m_pMainWindow)
{ {
m_pMainWindow->showMessageDialog(type_question, QString::fromWCharArray(L"提示"), m_pMainWindow->showMessageDialog(type_question, QString::fromWCharArray(L"提示"),
QString::fromWCharArray(L"当前正在新建连接的编辑中,确定放弃")); QString::fromWCharArray(L"当前正在新建连接的编辑中,确定放弃"));
if(g_msgDlgBtn == btn_No) if(g_msgDlgBtn == btn_No)
{ {
e->ignore(); e->ignore();
@ -110,12 +111,19 @@ void ConnectionDialog::initialize()
ui->splitter->setStretchFactor(0, 3); ui->splitter->setStretchFactor(0, 3);
connect(ui->connectionList, &QTableWidget::cellClicked, this, &ConnectionDialog::onTableCellClicked_connList); connect(ui->connectionList, &QTableWidget::cellClicked, this, &ConnectionDialog::onTableCellClicked_connList);
connect(ui->connectionList, &QTableWidget::cellDoubleClicked, this, &ConnectionDialog::onTableCellDbClicked_connList);
connect(ui->comboBox_dbType, &QComboBox::currentTextChanged, this, &ConnectionDialog::onComboxChanged_dbType); connect(ui->comboBox_dbType, &QComboBox::currentTextChanged, this, &ConnectionDialog::onComboxChanged_dbType);
connect(ui->btnOpen, &QPushButton::clicked, this, &ConnectionDialog::onBtnClicked_open); connect(ui->btnOpen, &QPushButton::clicked, this, &ConnectionDialog::onBtnClicked_open);
connect(ui->btnCancle, &QPushButton::clicked, this, &ConnectionDialog::onBtnClicked_cancle); connect(ui->btnCancle, &QPushButton::clicked, this, &ConnectionDialog::onBtnClicked_cancle);
connect(ui->btnSave, &QPushButton::clicked, this, &ConnectionDialog::onBtnClicked_save); connect(ui->btnSave, &QPushButton::clicked, this, &ConnectionDialog::onBtnClicked_save);
connect(ui->btnAdd, &QPushButton::clicked, this, &ConnectionDialog::onBtnClicked_add); connect(ui->btnAdd, &QPushButton::clicked, this, &ConnectionDialog::onBtnClicked_add);
connect(ui->btnRemove, &QPushButton::clicked, this, &ConnectionDialog::onBtnClicked_remove); connect(ui->btnRemove, &QPushButton::clicked, this, &ConnectionDialog::onBtnClicked_remove);
QList<QLineEdit*> lineEdits = this->findChildren<QLineEdit*>();
for(QLineEdit* lineEdit : lineEdits)
connect(lineEdit, &QLineEdit::textEdited, this, [this]{ui->btnSave->setEnabled(true);});
connect(ui->plainTextEdit, &QPlainTextEdit::textChanged, this, [this]{ui->btnSave->setEnabled(true);});
connect(ui->comboBox_dbType, &QComboBox::currentIndexChanged, this, [this]{ui->btnSave->setEnabled(true);});
} }
void ConnectionDialog::appendConnListItem(const QString& connID, const QString& connName, const QString& connRemark) void ConnectionDialog::appendConnListItem(const QString& connID, const QString& connName, const QString& connRemark)
@ -256,6 +264,7 @@ void ConnectionDialog::onComboxChanged_dbType(const QString& text)
void ConnectionDialog::onTableCellClicked_connList(int row, int column) void ConnectionDialog::onTableCellClicked_connList(int row, int column)
{ {
//qDebug() << "cellClicked";
if(m_curConnListRow != row) if(m_curConnListRow != row)
{ {
if(m_isNewStatus) if(m_isNewStatus)
@ -273,15 +282,58 @@ void ConnectionDialog::onTableCellClicked_connList(int row, int column)
m_isNewStatus = false; m_isNewStatus = false;
removeConnListItem(m_curConnListRow); removeConnListItem(m_curConnListRow);
} }
else if(ui->btnSave->isEnabled()) //信息有修改
{
if(m_pMainWindow)
{
m_pMainWindow->showMessageDialog(type_question, QString::fromWCharArray(L"提示"),
QString::fromWCharArray(L"当前链接信息已修改,确认丢弃吗"));
if(g_msgDlgBtn == btn_No)
{
ui->connectionList->setCurrentCell(m_curConnListRow, 0);
return;
}
}
}
//刷新信息 //刷新信息
QTableWidgetItem* item = ui->connectionList->item(row, 0); QTableWidgetItem* item = ui->connectionList->item(row, 0);
QString connID = item->data(Qt::UserRole + itemID).toString(); QString connID = item->data(Qt::UserRole + itemID).toString();
loadConnInfo(connID); loadConnInfo(connID);
m_curConnListRow = row; m_curConnListRow = row;
ui->btnSave->setEnabled(false);
} }
} }
void ConnectionDialog::onTableCellDbClicked_connList(int row, int column)
{
//qDebug() << "cellDoubleClicked";
/*if(m_isNewStatus)
{
if(m_pMainWindow)
{
m_pMainWindow->showMessageDialog(type_question, QString::fromWCharArray(L"提示"),
QString::fromWCharArray(L"当前正在新建连接的编辑中,确定放弃吗"));
if(g_msgDlgBtn == btn_No)
{
ui->connectionList->setCurrentCell(m_curConnListRow, 0);
return;
}
}
m_isNewStatus = false;
removeConnListItem(m_curConnListRow);
}
//刷新信息
QTableWidgetItem* item = ui->connectionList->item(row, 0);
QString connID = item->data(Qt::UserRole + itemID).toString();
loadConnInfo(connID);
m_curConnListRow = row;*/
//直接打开链接即可触发doubleClick之前一定会先触发clicked
onBtnClicked_open();
}
void ConnectionDialog::onBtnClicked_open() void ConnectionDialog::onBtnClicked_open()
{ {
if(ui->lineEdit_connection->text() == "" || ui->lineEdit_hostName->text() == "" || ui->lineEdit_userName->text() == "" || if(ui->lineEdit_connection->text() == "" || ui->lineEdit_hostName->text() == "" || ui->lineEdit_userName->text() == "" ||
@ -363,6 +415,7 @@ void ConnectionDialog::onBtnClicked_save()
item->setText(config.strComment); item->setText(config.strComment);
Settings::instance().saveDatabaseConfig(config); Settings::instance().saveDatabaseConfig(config);
ui->btnSave->setEnabled(false);
} }
void ConnectionDialog::onBtnClicked_add() void ConnectionDialog::onBtnClicked_add()
@ -376,6 +429,7 @@ void ConnectionDialog::onBtnClicked_add()
} }
addNewConnListItem(); addNewConnListItem();
m_isNewStatus = true; m_isNewStatus = true;
ui->btnSave->setEnabled(true);
} }
void ConnectionDialog::onBtnClicked_remove() void ConnectionDialog::onBtnClicked_remove()
@ -389,6 +443,7 @@ void ConnectionDialog::onBtnClicked_remove()
removeConnListItem(m_curConnListRow); removeConnListItem(m_curConnListRow);
if(m_isNewStatus) if(m_isNewStatus)
m_isNewStatus = false; m_isNewStatus = false;
ui->btnSave->setEnabled(false);
} }
} }
} }

468
ui/connInfoEditDialog.ui Normal file
View File

@ -0,0 +1,468 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>connInfoEditDialog</class>
<widget class="QDialog" name="connInfoEditDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>431</width>
<height>422</height>
</rect>
</property>
<property name="windowTitle">
<string>会话编辑</string>
</property>
<property name="windowIcon">
<iconset resource="../resource/PowerModeler.qrc">
<normaloff>:/img/images/icon_disconnect.png</normaloff>:/img/images/icon_disconnect.png</iconset>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTabWidget" name="tabWidget">
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<property name="tabsClosable">
<bool>false</bool>
</property>
<property name="tabBarAutoHide">
<bool>true</bool>
</property>
<widget class="QWidget" name="tab">
<attribute name="icon">
<iconset resource="../resource/PowerModeler.qrc">
<normaloff>:/img/images/icon_setting.png</normaloff>:/img/images/icon_setting.png</iconset>
</attribute>
<attribute name="title">
<string>配置</string>
</attribute>
<layout class="QGridLayout" name="gridLayout">
<property name="leftMargin">
<number>18</number>
</property>
<property name="topMargin">
<number>10</number>
</property>
<property name="rightMargin">
<number>18</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="horizontalSpacing">
<number>0</number>
</property>
<property name="verticalSpacing">
<number>10</number>
</property>
<item row="1" column="1">
<widget class="QLineEdit" name="lineEdit_connection">
<property name="minimumSize">
<size>
<width>0</width>
<height>21</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>21</height>
</size>
</property>
<property name="maxLength">
<number>30</number>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_userName">
<property name="minimumSize">
<size>
<width>91</width>
<height>21</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>91</width>
<height>21</height>
</size>
</property>
<property name="text">
<string>用户名:</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_port">
<property name="minimumSize">
<size>
<width>91</width>
<height>21</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>91</width>
<height>21</height>
</size>
</property>
<property name="text">
<string>端口号:</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="lineEdit_hostName">
<property name="minimumSize">
<size>
<width>0</width>
<height>21</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>21</height>
</size>
</property>
<property name="maxLength">
<number>30</number>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QLineEdit" name="lineEdit_password">
<property name="minimumSize">
<size>
<width>0</width>
<height>21</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>21</height>
</size>
</property>
<property name="maxLength">
<number>30</number>
</property>
<property name="echoMode">
<enum>QLineEdit::EchoMode::Password</enum>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QWidget" name="widget" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLineEdit" name="lineEdit_port">
<property name="minimumSize">
<size>
<width>51</width>
<height>21</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>51</width>
<height>21</height>
</size>
</property>
<property name="text">
<string>5432</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_error">
<property name="styleSheet">
<string notr="true">color: rgb(255, 0, 0);</string>
</property>
<property name="text">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="10" column="0">
<widget class="QLabel" name="label_dbComment">
<property name="minimumSize">
<size>
<width>91</width>
<height>21</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>91</width>
<height>21</height>
</size>
</property>
<property name="text">
<string>备注:</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_hostName">
<property name="minimumSize">
<size>
<width>106</width>
<height>21</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>106</width>
<height>21</height>
</size>
</property>
<property name="text">
<string>主机名/IP地址</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_connection">
<property name="minimumSize">
<size>
<width>91</width>
<height>21</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>91</width>
<height>21</height>
</size>
</property>
<property name="text">
<string>链接名称:</string>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="label_password">
<property name="minimumSize">
<size>
<width>91</width>
<height>21</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>91</width>
<height>21</height>
</size>
</property>
<property name="text">
<string>密码:</string>
</property>
</widget>
</item>
<item row="10" column="1">
<widget class="QPlainTextEdit" name="plainTextEdit">
<property name="styleSheet">
<string notr="true"/>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QLineEdit" name="lineEdit_userName">
<property name="minimumSize">
<size>
<width>0</width>
<height>21</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>21</height>
</size>
</property>
<property name="maxLength">
<number>30</number>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_dbType">
<property name="minimumSize">
<size>
<width>91</width>
<height>21</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>91</width>
<height>21</height>
</size>
</property>
<property name="text">
<string>数据库类型:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="comboBox_dbType">
<property name="minimumSize">
<size>
<width>0</width>
<height>26</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>26</height>
</size>
</property>
<item>
<property name="text">
<string>PostgreSQL</string>
</property>
<property name="icon">
<iconset resource="../resource/PowerModeler.qrc">
<normaloff>:/img/images/icon_postgresql.png</normaloff>:/img/images/icon_postgresql.png</iconset>
</property>
</item>
<item>
<property name="text">
<string>MySQL</string>
</property>
<property name="icon">
<iconset resource="../resource/PowerModeler.qrc">
<normaloff>:/img/images/icon_mysql.png</normaloff>:/img/images/icon_mysql.png</iconset>
</property>
</item>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="label_dbName">
<property name="minimumSize">
<size>
<width>91</width>
<height>21</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>91</width>
<height>21</height>
</size>
</property>
<property name="text">
<string>数据库名称:</string>
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="QLineEdit" name="lineEdit_dbName">
<property name="minimumSize">
<size>
<width>0</width>
<height>21</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>21</height>
</size>
</property>
<property name="maxLength">
<number>30</number>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="btnSave">
<property name="minimumSize">
<size>
<width>86</width>
<height>31</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>86</width>
<height>31</height>
</size>
</property>
<property name="text">
<string>保存</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btnCancle">
<property name="minimumSize">
<size>
<width>86</width>
<height>31</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>86</width>
<height>31</height>
</size>
</property>
<property name="text">
<string>取消</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<resources>
<include location="../resource/PowerModeler.qrc"/>
</resources>
<connections/>
</ui>

View File

@ -15,7 +15,7 @@
</property> </property>
<property name="windowIcon"> <property name="windowIcon">
<iconset resource="../resource/PowerModeler.qrc"> <iconset resource="../resource/PowerModeler.qrc">
<normaloff>:/img/images/icon_database.png</normaloff>:/img/images/icon_database.png</iconset> <normaloff>:/img/images/icon_disconnect.png</normaloff>:/img/images/icon_disconnect.png</iconset>
</property> </property>
<property name="styleSheet"> <property name="styleSheet">
<string notr="true"/> <string notr="true"/>
@ -179,6 +179,9 @@ QTableView::item:selected
<property name="currentIndex"> <property name="currentIndex">
<number>0</number> <number>0</number>
</property> </property>
<property name="tabBarAutoHide">
<bool>false</bool>
</property>
<widget class="QWidget" name="tab"> <widget class="QWidget" name="tab">
<attribute name="icon"> <attribute name="icon">
<iconset resource="../resource/PowerModeler.qrc"> <iconset resource="../resource/PowerModeler.qrc">

View File

@ -14,8 +14,8 @@
<string>PowerModeler</string> <string>PowerModeler</string>
</property> </property>
<property name="windowIcon"> <property name="windowIcon">
<iconset> <iconset resource="../resource/PowerModeler.qrc">
<normaloff>:/img/images/icons_database.png</normaloff>:/img/images/icons_database.png</iconset> <normaloff>:/img/images/icon_database.png</normaloff>:/img/images/icon_database.png</iconset>
</property> </property>
<property name="styleSheet"> <property name="styleSheet">
<string notr="true">QPushButton <string notr="true">QPushButton
@ -31,6 +31,10 @@ QPushButton:pressed
{ {
background-color:rgba(70,130,180,50); background-color:rgba(70,130,180,50);
} }
QPushButton:disabled
{
color:rgb(180,180,180);
}
QComboBox QAbstractItemView QComboBox QAbstractItemView
{ {