QTabWidget 태그를 두 번 클릭하여 닫는 방법 (권장)

Qt로 ARM을 만들자 Qt4에서 QTabWidget의 원래 닫기 버튼(X)이 너무 작아서 터치보드로 누르기 어렵다는 것을 발견했다.그래서 브라우저와 같은 더블 클릭 닫기 기능을 생각했다. 왜냐하면 이전에 C#의 자원 관리자를 했기 때문에 Double Click을 직접 연결할 수 있다고 생각했지만 뒤져도 해당하는 SLOT를 찾지 못했다. 결과적으로 QWidget에서 신호를 포착했다. 바로 QTab Widget 탭이 없는 마우스 사건이다.뒤이어 인터넷에서 여러 가지 검색을 했는데 결과는 여러 가지 문제를 찾았고 하나하나 정확하게 대답해 냈는데...마지막으로 생각해 보면 정말 안 된다. 가장 멍청한 방법으로 Hock을 모방하여 실현한다!
그래서 나는 QTab Widget(tabBar ()는protected이기 때문에 아버지를 괴롭혔다!)을 다시 실었다.이렇게 하면 라벨을 얻을 수 있다.

class Tab : public QTabWidget
 {
 Q_OBJECT
 public:
 Tab(QWidget *parent = );
 QTabBar* GetBar();
 protected:
 void mousePressEvent(QMouseEvent *event);
 }; 
그리고 이벤트 필터를 실현하려면 먼저 이벤트를 더블 클릭한 다음에 탭 위치인지 판단하고 현재 탭을 삭제합니다. 더블 클릭 이벤트에서 반드시 클릭을 터치해야 합니다. 즉, 탭 선택 이벤트이기 때문에 다른 탭을 더블 클릭한 index 변경 문제를 고려할 필요가 없습니다.

#ifndef MYEVENTFILTER_H
 #define MYEVENTFILTER_H
 #include <QMainWindow>
 #include <QMouseEvent>
 #include "tab.h"
 extern int tabindex_current;
 extern int tabindex_old;
 extern Tab *tabWidget;
 extern QPoint tableft;
 extern int tabwidth;
 extern int tabheight;
 // Tab 
 class myEventFilter: public QObject
 {
 public:
 myEventFilter():QObject()
 {};
 ~myEventFilter(){};
 bool eventFilter(QObject* object,QEvent* event)
 {
 if (event->type()==QEvent::MouseButtonDblClick)
 {
  QMouseEvent *e = static_cast<QMouseEvent*>(event);
  QPoint pos = e->pos();
  int x = tableft.x();
  int x = tableft.x()+tabwidth;
  int y = tableft.y();
  int y = tableft.y()+tabheight;
  if (pos.x() >= x && pos.y() >= y && pos.x() <= x && pos.y() <= y)
  tabWidget->removeTab(tabindex_current);
 }
 return QObject::eventFilter(object,event);
 };
 };
 #endif // MYEVENTFILTER_H 
마지막으로 주 함수 main에 연결하면 모든 이벤트를 포착할 수 있습니다.
qApp->installEventFilter(new myEventFilter());
또한 탭을 전환할 때 너비 정보를 업데이트해야 합니다(높이는 업데이트할 필요가 없습니다).

 void MainWindow::updateBar()
 {
 tabindex_current = tabWidget->currentIndex();
 tabindex_old = tabindex_current;
 QTabBar *bar = tabWidget->GetBar();
 if (bar->size().width() > )
  tabwidth = bar->size().width();
 }
위에서 말한 것은 편집자가 여러분께 소개한 QTab Widget 라벨을 두 번 클릭하여 닫는 방법(추천)입니다. 여러분께 도움이 되었으면 합니다. 궁금한 점이 있으면 저에게 메시지를 남겨 주십시오. 편집자는 제때에 답장을 드리겠습니다.여기에서도 저희 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기