QTabWidget 태그를 두 번 클릭하여 닫는 방법 (권장)
2559 단어 qtabwidget태그두 번 클릭하여 닫기
그래서 나는 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 라벨을 두 번 클릭하여 닫는 방법(추천)입니다. 여러분께 도움이 되었으면 합니다. 궁금한 점이 있으면 저에게 메시지를 남겨 주십시오. 편집자는 제때에 답장을 드리겠습니다.여기에서도 저희 사이트에 대한 지지에 감사드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
해시 태그 기능을 만들어 보자.1. 간단한 게시 기능 만들기 구조 mysite/post/models.pymysite/post/views.pymysite/post/urls.py 템플릿 파일을 만들기 때문에 settings.py TEMPLATE 설정...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.