您的位置:首页 > 娱乐 > 八卦 > 鸿星尔克网络营销案例分析_alexa排名搜索_百度一下点击搜索_百度手机助手苹果版

鸿星尔克网络营销案例分析_alexa排名搜索_百度一下点击搜索_百度手机助手苹果版

2025/5/6 21:05:59 来源:https://blog.csdn.net/weixin_42944928/article/details/145794247  浏览:    关键词:鸿星尔克网络营销案例分析_alexa排名搜索_百度一下点击搜索_百度手机助手苹果版
鸿星尔克网络营销案例分析_alexa排名搜索_百度一下点击搜索_百度手机助手苹果版

      上次说到,我想加一个QTextEdit放在 my_QWidget上,在不使用其它任何控件的情况上,让QTextEdit随窗体的大小改变而布满整个窗体,如何做。

一个方法是:使用继承

TextEditWidget : public my_QWidget
{}

第二个方法是:使用函数指针

第三个方法是:使用Qt中的信号

最后重写resizeEvent虚函数:

这两种方法效果是一样的,例如:

int main(int argc, char* argv[])
{QApplication a(argc, argv);  //注意,这里是QApplicationga.setStdLocaleForUTF8();my_QWidget w;QObject::connect(&w, &my_QWidget::signal_resizeEvent, [](QWidget* pw, QResizeEvent* event){std::wcout << _t("触发信号!");_pn(event->size());});w.my_resizeEvent = [](QWidget* pw, QResizeEvent* event) {std::wcout << _t("触发函数指针!");_pn(event->size());};w.show();return a.exec();
}

效果如图:

最后附上代码,只加了两行语句

my_QWidget.h

class my_QWidget : public QWidget
{Q_OBJECTpublic:public:my_QWidget(QWidget* parent = nullptr) : QWidget(parent) { }protected://---------------------------------------------------------事件重写//bool event(QEvent* event) override;//virtual void mousePressEvent(QMouseEvent* event)override;//virtual void mouseReleaseEvent(QMouseEvent* event)override;//virtual void mouseDoubleClickEvent(QMouseEvent* event)override;//virtual void mouseMoveEvent(QMouseEvent* event)override;
#if QT_CONFIG(wheelevent)//virtual void wheelEvent(QWheelEvent* event)override;
#endif//virtual void keyPressEvent(QKeyEvent* event)override;//virtual void keyReleaseEvent(QKeyEvent* event)override;//virtual void focusInEvent(QFocusEvent* event)override;//virtual void focusOutEvent(QFocusEvent* event)override;//virtual void enterEvent(QEnterEvent* event)override;//virtual void leaveEvent(QEvent* event)override;//virtual void paintEvent(QPaintEvent* event)override;//virtual void moveEvent(QMoveEvent* event);protected:virtual void resizeEvent(QResizeEvent* event)override;    
public://函数指针void (*my_resizeEvent)(QWidget* pw, QResizeEvent* event) = 0;Q_SIGNALS://信号void signal_resizeEvent(QWidget* pw, QResizeEvent* event);protected://virtual void closeEvent(QCloseEvent* event)override;
#ifndef QT_NO_CONTEXTMENU//virtual void contextMenuEvent(QContextMenuEvent* event)override;
#endif
#if QT_CONFIG(tabletevent)//virtual void tabletEvent(QTabletEvent* event)override;
#endif
#ifndef QT_NO_ACTION//virtual void actionEvent(QActionEvent* event)override;
#endif#if QT_CONFIG(draganddrop)//virtual void dragEnterEvent(QDragEnterEvent* event)override;//virtual void dragMoveEvent(QDragMoveEvent* event)override;//virtual void dragLeaveEvent(QDragLeaveEvent* event)override;//virtual void dropEvent(QDropEvent* event)override;
#endif//virtual void showEvent(QShowEvent* event)override;//virtual void hideEvent(QHideEvent* event)override;//virtual bool nativeEvent(const QByteArray& eventType, void* message, qintptr* result)override;// Misc. protected functions//virtual void changeEvent(QEvent*)override; };

my_QWidget.cpp

#ifdef _QT_ ///_QT_void my_QWidget::resizeEvent(QResizeEvent* event)
{
/*在 Qt 中,resizeEvent 是一个重要的事件处理函数,用于处理控件大小改变时的事件。当用户调整窗口大小,或者通过代码调用 resize() 或 setGeometry() 改变控件的大小时,resizeEvent 会被触发。你可以重写这个函数来实现自定义的行为,例如调整子控件的大小或重新布局。1. resizeEvent 的基本用法函数原型cpp复制virtual void QWidget::resizeEvent(QResizeEvent *event);参数:event:QResizeEvent 对象,包含控件的新旧大小信息。event->size():返回控件的新大小(QSize 类型)。event->oldSize():返回控件的旧大小(QSize 类型)。调用时机:当控件的大小发生改变时,resizeEvent 会被自动调用。
*/QWidget::resizeEvent(event);if (my_resizeEvent != 0) {	 my_resizeEvent(this,event); //用函数指针调用函数} signal_resizeEvent(this, event);  //调用Qt定义的函数}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com