实现属性组浏览tab的关闭
This commit is contained in:
parent
f9ff317b46
commit
1f42960e74
|
|
@ -22,9 +22,11 @@ public:
|
||||||
void addTab_attribute(const QString&, ModelAttributeGroup&);
|
void addTab_attribute(const QString&, ModelAttributeGroup&);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void closeTab(QWidget*);
|
void onBtnClick_tabCloseBtn(int);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
int tabIndex(const QString&);
|
||||||
|
|
||||||
Ui::DatabaseBrowser *ui;
|
Ui::DatabaseBrowser *ui;
|
||||||
QList<AttributeView> m_attributeViewList;
|
QList<AttributeView> m_attributeViewList;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,7 @@ private:
|
||||||
void connectToDB(const QString&);
|
void connectToDB(const QString&);
|
||||||
void disconnectToDB(const QString&);
|
void disconnectToDB(const QString&);
|
||||||
void removeNode(DBStructureNode*);
|
void removeNode(DBStructureNode*);
|
||||||
|
void openAttributeGroup(DBStructureNode*);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void actionTrigger_addModel();
|
void actionTrigger_addModel();
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,8 @@ DatabaseBrowser::DatabaseBrowser(QWidget *parent)
|
||||||
, ui(new Ui::DatabaseBrowser)
|
, ui(new Ui::DatabaseBrowser)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
|
||||||
|
connect(ui->tabWidget, &QTabWidget::tabCloseRequested, this, &DatabaseBrowser::onBtnClick_tabCloseBtn);
|
||||||
}
|
}
|
||||||
|
|
||||||
DatabaseBrowser::~DatabaseBrowser()
|
DatabaseBrowser::~DatabaseBrowser()
|
||||||
|
|
@ -15,12 +17,34 @@ DatabaseBrowser::~DatabaseBrowser()
|
||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int DatabaseBrowser::tabIndex(const QString& tabText)
|
||||||
|
{
|
||||||
|
for(int i = 0; i < ui->tabWidget->count(); i++)
|
||||||
|
{
|
||||||
|
QString strText = ui->tabWidget->tabText(i);
|
||||||
|
if(ui->tabWidget->tabText(i) == tabText)
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
void DatabaseBrowser::addTab_attribute(const QString& connection, ModelAttributeGroup& attributeGroup)
|
void DatabaseBrowser::addTab_attribute(const QString& connection, ModelAttributeGroup& attributeGroup)
|
||||||
{
|
{
|
||||||
|
QString tabText = attributeGroup.strModelName + "/" + attributeGroup.strGroupName;
|
||||||
|
int index = tabIndex(tabText);
|
||||||
|
if(index != -1)
|
||||||
|
{
|
||||||
|
ui->tabWidget->setCurrentIndex(index);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
AttributeView* view = new AttributeView(ui->tabWidget, connection, QString::number(attributeGroup.modelID), QString::number(attributeGroup.groupID));
|
AttributeView* view = new AttributeView(ui->tabWidget, connection, QString::number(attributeGroup.modelID), QString::number(attributeGroup.groupID));
|
||||||
int index = ui->tabWidget->addTab(view, QIcon(":/img/images/icon_hierarchy.png"), attributeGroup.strGroupName);
|
index = ui->tabWidget->addTab(view, QIcon(":/img/images/icon_hierarchy.png"), tabText);
|
||||||
//添加自定义按钮
|
//添加自定义按钮
|
||||||
QPushButton* closeBtn = new QPushButton("");
|
/*QPushButton* closeBtn = new QPushButton("");
|
||||||
|
closeBtn->setProperty("index", index);
|
||||||
|
connect(closeBtn, &QPushButton::clicked, this, &DatabaseBrowser::onBtnClick_tabCloseBtn);
|
||||||
closeBtn->setFixedSize(12, 12);
|
closeBtn->setFixedSize(12, 12);
|
||||||
closeBtn->setStyleSheet("QPushButton\n"
|
closeBtn->setStyleSheet("QPushButton\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
|
|
@ -35,11 +59,20 @@ void DatabaseBrowser::addTab_attribute(const QString& connection, ModelAttribute
|
||||||
" border-image: url(:/img/images/btn_close_pressed.png);\n"
|
" border-image: url(:/img/images/btn_close_pressed.png);\n"
|
||||||
"}");
|
"}");
|
||||||
QTabBar* tabBar = ui->tabWidget->tabBar();
|
QTabBar* tabBar = ui->tabWidget->tabBar();
|
||||||
tabBar->setTabButton(index, QTabBar::RightSide, closeBtn);
|
tabBar->setTabButton(index, QTabBar::RightSide, closeBtn);*/
|
||||||
|
|
||||||
ui->tabWidget->setCurrentIndex(index);
|
ui->tabWidget->setCurrentIndex(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DatabaseBrowser::closeTab(QWidget* tab)
|
void DatabaseBrowser::onBtnClick_tabCloseBtn(int index)
|
||||||
{
|
{
|
||||||
|
/*QObject* sender = QObject::sender();
|
||||||
|
QPushButton* button = qobject_cast<QPushButton*>(sender);
|
||||||
|
if(!button)
|
||||||
|
return;
|
||||||
|
|
||||||
|
int index = button->property("index").toInt();*/
|
||||||
|
QWidget* widget = ui->tabWidget->widget(index);
|
||||||
|
ui->tabWidget->removeTab(index);
|
||||||
|
delete widget;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -101,6 +101,20 @@ void DBStructureView::removeNode(DBStructureNode* node)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DBStructureView::openAttributeGroup(DBStructureNode* node)
|
||||||
|
{
|
||||||
|
DBStructureNode* parent = node->parentNode();
|
||||||
|
if(parent && parent->type() == TableNode)
|
||||||
|
{
|
||||||
|
int modelID = parent->data(Qt::UserRole + NodeDataRole::ID).toInt();
|
||||||
|
int groupID = node->data(Qt::UserRole + NodeDataRole::ID).toInt();
|
||||||
|
QString modelName = parent->name();
|
||||||
|
QString groupName = node->name();
|
||||||
|
ModelAttributeGroup attributeGroup(modelID, groupID, modelName, groupName);
|
||||||
|
emit openAttributeInfo(m_curConnection, attributeGroup);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void DBStructureView::disconnectCurConnection()
|
void DBStructureView::disconnectCurConnection()
|
||||||
{
|
{
|
||||||
if(!m_curConnection.isEmpty())
|
if(!m_curConnection.isEmpty())
|
||||||
|
|
@ -154,16 +168,7 @@ void DBStructureView::itemDoubleClick(const QModelIndex& index)
|
||||||
}
|
}
|
||||||
else if(node->type() == GroupNode)
|
else if(node->type() == GroupNode)
|
||||||
{
|
{
|
||||||
DBStructureNode* parent = node->parentNode();
|
openAttributeGroup(node);
|
||||||
if(parent && parent->type() == TableNode)
|
|
||||||
{
|
|
||||||
int modelID = parent->data(Qt::UserRole + NodeDataRole::ID).toInt();
|
|
||||||
int groupID = node->data(Qt::UserRole + NodeDataRole::ID).toInt();
|
|
||||||
QString modelName = parent->name();
|
|
||||||
QString groupName = node->name();
|
|
||||||
ModelAttributeGroup attributeGroup(modelID, groupID, modelName, groupName);
|
|
||||||
emit openAttributeInfo(m_curConnection, attributeGroup);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -227,7 +232,7 @@ void DBStructureView::showContextMenu(const QPoint& pos)
|
||||||
});
|
});
|
||||||
menu.addSeparator();
|
menu.addSeparator();
|
||||||
menu.addAction(QString::fromWCharArray(L"刷新"), []{});
|
menu.addAction(QString::fromWCharArray(L"刷新"), []{});
|
||||||
menu.addAction(QString::fromWCharArray(L"打开"), []{});
|
menu.addAction(QString::fromWCharArray(L"打开"), [this, node]{openAttributeGroup(node);});
|
||||||
menu.addSeparator();
|
menu.addSeparator();
|
||||||
menu.addAction(QString::fromWCharArray(L"清空数据"), []{});
|
menu.addAction(QString::fromWCharArray(L"清空数据"), []{});
|
||||||
QPoint originPoint = this->mapToGlobal(QPoint(0,0));
|
QPoint originPoint = this->mapToGlobal(QPoint(0,0));
|
||||||
|
|
|
||||||
|
|
@ -31,11 +31,23 @@
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QTabWidget" name="tabWidget">
|
<widget class="QTabWidget" name="tabWidget">
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">QTabBar::close-button {
|
||||||
|
border-image: url(:/img/images/btn_close_default.png);
|
||||||
|
margin:2px;
|
||||||
|
}
|
||||||
|
QTabBar::close-button:hover {
|
||||||
|
border-image: url(:/img/images/btn_close_hover.png);
|
||||||
|
}
|
||||||
|
QTabBar::close-button:pressed {
|
||||||
|
border-image: url(:/img/images/btn_close_pressed.png);
|
||||||
|
}</string>
|
||||||
|
</property>
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>-1</number>
|
<number>-1</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="tabsClosable">
|
<property name="tabsClosable">
|
||||||
<bool>false</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue