代码:
class MyWidget : public QWidget
{
public:
std::function<void(QResizeEvent* event)> pf_resizeEvent = 0;
protected:
inline void resizeEvent(QResizeEvent* event) override {
if (pf_resizeEvent != 0)
pf_resizeEvent(event);
}
};
int main(int argc, char* argv[])
{
QApplication a(argc, argv); //注意,这里是QApplication
ga.setStdLocaleForUTF8();
MyWidget w;
QTextEdit txt("Hello Qt" ,&w);
w.pf_resizeEvent = [&txt](QResizeEvent* event) {
txt.resize(event->size());
std::cout << "txt大小随窗体大小改变。\n";
};
w.show();
return a.exec();
}
运行结果:
关键定义:
以下是其它一些事件定义:
std::function<void(QMouseEvent* event)> pf_mousePressEvent = 0;
std::function<void(QMouseEvent* event)> pf_mouseReleaseEvent = 0;
std::function<void(QMouseEvent* event)> pf_mouseDoubleClickEvent = 0;
std::function<void(QMouseEvent* event)> pf_mouseMoveEvent = 0;
std::function<void(QMouseEvent* event)> pf_wheelEvent = 0;
std::function<void(QKeyEvent* event)> pf_keyPressEvent = 0;
std::function<void(QKeyEvent* event)> pf_keyReleaseEvent = 0;
std::function<void(QFocusEvent* event)> pf_focusInEvent = 0;
std::function<void(QFocusEvent* event)> pf_focusOutEvent = 0;
std::function<void(QEvent* event)> pf_leaveEvent = 0;
std::function<void(QResizeEvent* event)> pf_resizeEvent = 0;
std::function<void(QMoveEvent* event)> pf_moveEvent = 0;
std::function<void(QCloseEvent* event)> pf_closeEvent = 0;