#include "dbBrowser.h" #include "ui_dbBrowser.h" #include "attributeView.h" #include DatabaseBrowser::DatabaseBrowser(QWidget *parent) : QWidget(parent) , ui(new Ui::DatabaseBrowser) { ui->setupUi(this); connect(ui->tabWidget, &QTabWidget::tabCloseRequested, this, &DatabaseBrowser::onTabCloseRequested); connect(ui->tabWidget, &QTabWidget::currentChanged, this, &DatabaseBrowser::onCurrentTabChanged); } DatabaseBrowser::~DatabaseBrowser() { delete ui; } int DatabaseBrowser::tabIndex(const QString& tabText) { for(int i = 0; i < ui->tabWidget->count(); i++) { if(ui->tabWidget->tabText(i) == tabText) return i; } return -1; } 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(attributeGroup, ui->tabWidget, connection); index = ui->tabWidget->addTab(view, QIcon(":/img/images/icon_hierarchy.png"), tabText); //添加自定义按钮 /*QPushButton* closeBtn = new QPushButton(""); closeBtn->setProperty("index", index); connect(closeBtn, &QPushButton::clicked, this, &DatabaseBrowser::onBtnClick_tabCloseBtn); closeBtn->setFixedSize(12, 12); closeBtn->setStyleSheet("QPushButton\n" "{\n" " border-image: url(:/img/images/btn_close_default.png);\n" "}\n" "QPushButton:hover\n" "{\n" " border-image: url(:/img/images/btn_close_hover.png);\n" "}\n" "QPushButton:pressed\n" "{\n" " border-image: url(:/img/images/btn_close_pressed.png);\n" "}"); QTabBar* tabBar = ui->tabWidget->tabBar(); tabBar->setTabButton(index, QTabBar::RightSide, closeBtn);*/ ui->tabWidget->setCurrentIndex(index); } void DatabaseBrowser::onTabCloseRequested(int index) { /*QObject* sender = QObject::sender(); QPushButton* button = qobject_cast(sender); if(!button) return; int index = button->property("index").toInt();*/ QWidget* widget = ui->tabWidget->widget(index); ui->tabWidget->removeTab(index); delete widget; } void DatabaseBrowser::onCurrentTabChanged(int index) { if(index == -1) //最后一个tab关闭时会触发 { ui->recordInfo->clear(); return; } QString recordInfo = QString::fromWCharArray(L"共 * 条记录"); QWidget* widget = ui->tabWidget->widget(index); AttributeView* attributeView = qobject_cast(widget); if(attributeView) { attributeView->active(); } }