Я реализую приложение, в котором у меня есть 3 QToolButton
, и когда фокус наступает на любом QToolButton
, он должен resize
. Один из моих друзей дал мне ответ, но я не могу понять, как я наследую класс QMainWindow
, а также в моем mainWindow. Он говорит наследовать QToolButton
. Но будет возникать проблема множественного наследования. Итак, как именно использовать focusInEvent()
.Как использовать focusInEvent и focusOutEvent
MyCode:
mywindow.h :
class mywindow : public QMainWindow
{
Q_OBJECT
public:
mywindow() ;
protected:
void keyReleaseEvent(QKeyEvent *event);
void focusInEvent(QFocusEvent *event);
void focusOutEvent(QFocusEvent *event);
private:
QWidget *widget;
QStackedWidget *stack1;
QToolBar *tool;
QListWidget *list1;
QListWidget *list2;
QVBoxLayout *vertical;
QToolButton *button1;
QToolButton *button2;
QToolButton *button3;
public slots:
void fileNew();
void file();
bool eventFilter(QObject *object, QEvent *event);
};
mywindow.cpp:
mywindow::mywindow() : QMainWindow()
{
//some code
}
код моего друга, который я должен объединить:
class mywindow : public QToolButton
{
private:
int originalWidth, originalHeight;
int bigWidth, bigHeight;
};
void focusInEvent (QFocusEvent * event) {
resize(bigWidth,bigHeight);
QToolButton::focusInEvent(event);
}
void focusOutEvent (QFocusEvent * event) {
resize(originalWidth,originalHeight);
QToolButton::focusOutEvent(event);
}
Это дает эту ошибку: «YourButtton» не был объявлен – Rupesh
вы должны создать новый класс, наследующий QToolButton (пример я дал YourButton как YourButton.h и YourButton.cpp). то в .h файле вы переопределяете protected: foucusInEvent() и в .cpp-файле, вы можете реализовать изменение размера YourButton. см. эту ссылку answer http://stackoverflow.com/questions/2804115/qlineedit-focus-event. то вы должны использовать этот YourButton в своем классе mywindow. – Wagmare
Я заставляю вас показать, как создать пользовательский виджет, но не смог найти подходящий пример. вы можете следовать аналоговому ключу, formClock в примерах qt, но не так уж важно. если кто-либо на этом форуме может ему помочь .. сделайте это .. – Wagmare