2013-04-25 2 views
0

Фактически я пытаюсь получить mousePressEvent для QFrame в QT 5 (VS2010 с Qt-Addin). Видел так много предложений здесь и на других форумах, но новичок получил его на работу, или я не понял принцип. Также посмотрел пример scribble, не повезлоQFrame: создать mousePressEvent

Как я могу получить mousePressEvent для QFrame? Должен ли я создавать класс, который наследуется от QFrame, а затем инициализировать этот кадр самостоятельно в функции main()? разве не существует решение, которое я могу связать с Qt-Designer?

пытался несколько вещей, в основном видел что-то вроде этого:

protected: 
void TestQtFormsApplication::mousePressEvent(QMouseEvent *qevent) 
{ 
    if (qevent->button() == Qt::LeftButton) 
    { 
     this->close(); 
    } 
}; 

с этим я когда-либо получил ошибки C2027: использование неопределенного типа «QMouseEvent»

+0

Вы забыли, что в комплект входит? #include #include

+0

ошибка C2027 теперь фиксирована, забыл включить все необходимые файлы – Postback

ответ

1

Подкласс QFrame и переопределение mousePressEvent(..) так же, как у вас есть в вашем примере. Не забудьте указать accept() событие, чтобы оно не распространялось на родительский виджет. Ваша ошибка связана с тем, что QMouseEvent только объявлен в заголовочном файле QWidget, просто включите его самостоятельно.

Если вы хотите использовать свой подкласс в Qt Designer, просто используйте QFrame и «Продвигайте» его в свой подкласс (docs).

+0

я уже продвигаемых теперь QFrame к CustomFrame. CustomFrame теперь является подклассом QFrame, но теперь он бросает мне ошибки, что он не может найти никаких подходящих конструкторов, поэтому я думаю, что они не были на расстоянии от QFrame, как это решить? CustomFrame.h выглядит, как это и старая реализация сверху находится в файле .cpp класс DragDropFrame: общественный QFrame { защищены: \t недействительным mousePressEvent (QMouseEvent * QEvent); }; – Postback

+1

@Postback Err ... В этом коде нет конструктора! Вам понадобится тот, который берет 'QWidget * ', поэтому можно указать родителя. – cmannett85

+1

Ой, забыл, что полностью. thx решил проблему, и теперь все работает так, как должно – Postback

Смежные вопросы