2012-05-28 4 views
0

나는 qlabel 위젯을 가지고 있으며 mouseReleaseEvent()를 재정의했습니다. 제대로 작동하지 않지만 100 % 높이의 눈금처럼 mouseReleaseEvent를 절반 만 허용합니다 40 % 정도만 작동합니다. 이는 전체 qlabels의 정사각형 (100x100) 영역을 포함하지 않는다는 의미입니다. qlabel의 mouseReleaseEvent()가 제대로 작동하지 않습니다.

이 LABEL.CPP에

void label::mouseReleaseEvent(QMouseEvent *event) 
{ 
    QMessageBox msgBox; 
    msgBox.setText("Clicked()"); 
    msgBox.exec(); 
} 

아무것도 너무 잘못된 보인다하지만이 작동하지 않습니다

QLabel sample(&Parent);//parent is just QWidget object 
sample.resize(89,89); 
sample.move((Parent.width()/2 - sample.width()/2), (Parent.height()/2 - sample.height()/2)); 
sample.setStyleSheet("QLabel{background-color:red;}"); 

label mylabel(&Disc); 
sample.setMouseTracking(TRUE); 

MAIN.CPP

입니다.

감사합니다.

+0

나는 또한 mouseMoveEvent(), mousePressEvent() .. 등을 시도했지만 똑같은 문제가 발생합니다. 전체 QLabel의 사각형 영역에서 마우스 입력을 가져 가지 않습니다. – wenn32

+0

상황을 명확하게 설명해 주시겠습니까? MWE는 파편보다 낫습니다. QLabel 또는 레이블로 문제가 어디 있습니까? 그 부분은 명확하지 않습니다. QLabel을'move()'로 옮긴다. 레이아웃 부분은 어디에 있는가? –

답변

4

문제의 일부는 "레이블"대신 "QLabel"을 만드는 것입니다. 물론 QLabel은 특히 마우스를 놓을 때 아무 것도하지 않습니다. 마우스 릴리스는 서브 클래스에서 완벽하게 나를 위해 잘 작동 :

#include <QtGui> 

class Label : public QLabel 
{ 
protected: 
    void mouseReleaseEvent(QMouseEvent *) 
    { 
     qDebug() << "released"; 
    } 
}; 

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 

    Label label; 
    label.setText("Hello"); 

    label.show(); 
    return app.exec(); 
} 

그것은 라벨 (안 QLabel하지만, 서브 클래스)처럼 보이는이 뭔가 뒤에 표시 될 수 있습니다. 그렇다면 QLayout을 사용해야합니다.

관련 문제