QT程序中先new出其他控件,再new出QTabWidget,发现无论放什么控件,QMenuBar,QMenu,QPushButton等等无论怎么点击都不响应,调试好几天,结果发现,是因为QTabWidget的区域覆盖了其他控件,虽然QTabWidget的Tab通过Qss控制边距,显示上没有遮盖其他控件,但实际上却覆盖了其他控件,导致鼠标没有真正点击到其他控件上,修改为先new出QTabWidget,再new出其他控件,则其他控件图层在QTabWidget之上,不再被遮挡,可正确响应。

QTabWidget m_pMainMenuTab = new QTabWidget(this); m_pMainMenuTab->setGeometry(QRect(0, 5, geometry().width(), geometry().height() - 80)); m_pMainMenuTab->setTabPosition(QTabWidget::North); m_pMainMenuTab->setTabShape(QTabWidget::Rounded); m_pMainMenuTab->addTab(m_pDlgCount, tr("Sample")); m_pMainMenuTab->addTab(m_pDlgCount, tr("ListBack")); m_pMainMenuTab->addTab(m_pCalibrateDlg, tr("Calibrate")); m_pMainMenuTab->addTab(m_pQCDlg, tr("QC")); m_pMainMenuTab->addTab(m_pWorkSheetDlg, tr("WorkSheet")); m_pMainMenuTab->addTab(m_pStatisticDlg, tr("Statistic")); m_pMainMenuTab->addTab(m_pSetDlg, tr("Set")); m_pMainMenuTab->setStyleSheet(QString::fromUtf8( "QTabWidget::tab-bar{\n" " left:230px;\n" "} "));
QMenuBar *m_pMainMenuBar = new QMenuBar(this); m_pMainMenuBar->setGeometry(QRect(135, 12, 80, 36)); QMenu *m_pMainMenu = new QMenu(this); m_pMainMenu = m_pMainMenuBar->addMenu(tr("&Menu")); QAction *action1 = new QAction(m_pMainMenu); action1->setText(QString::fromLocal8Bit("样本分析")); QAction *action2 = new QAction(m_pMainMenu); action2->setText(QString::fromLocal8Bit("列表回顾")); QAction *action3 = new QAction(m_pMainMenu); action3->setText(QString::fromLocal8Bit("质控")); QAction *action4 = new QAction(m_pMainMenu); action4->setText(QString::fromLocal8Bit("校准")); QAction *action5 = new QAction(m_pMainMenu); action5->setText(QString::fromLocal8Bit("服务")); QAction *action6 = new QAction(m_pMainMenu); action6->setText(QString::fromLocal8Bit("设置")); m_pMainMenu->addAction(action1); m_pMainMenu->addAction(action2); m_pMainMenu->addAction(action3); m_pMainMenu->addAction(action4); m_pMainMenu->addAction(action5); m_pMainMenu->addAction(action6);
顺序颠倒则不能响应QMenuBar点击。 |