如何围绕无框 QWidget 制作免费的 space?
How to make a free space around a Frameless QWidget?
我在 Qt 中自定义了 Window,现在面临调整大小的问题。
我想在我的 QWidget
(Qt::FramelessWindowHint
) 周围有一个免费的 space,这样我就可以在那个区域处理鼠标悬停+离开+按下+释放事件,在这个事件中我更改光标形状并调整小部件的大小。
(我不想要 widget 的 mouseEvent,但是 space)
我怎样才能得到这样的区域?
我想你的 QWidget
在某个时候被添加到 QLayout
。然后通过调用 [setContentsMargins].
请求包含的 QLayout
在其内容周围保留一些免费的 space
例如,您有:
QWidget* widget = new QWidget( parent );
parent->layout()->addWidget( widget );
然后,只需添加:
parent->layout()->setContentsMargins( 100,100,100,100 );
这将保证 widget
周围有 100 像素的空白区域。
为了更通用,如果你没有 parent,你可以像这样创建一个中间 QWidget
:
你有:
QWidget* myWidget = new QWidget( NULL );
widget->show();
就这样:
QWidget* parentWithEmptySpaceBorder = new QWidget( NULL );
parentWithEmptySpaceBorder->setLayout( new QVBoxLayout() );
parentWithEmptySpaceBorder->layout()->setContentsMargins( 100,100,100,100 );
QWidget* myWidget = new QWidget( NULL );
parentWithEmptySpaceBorder->layout()->addWidget( myWidget );
parentWithEmptySpaceBorder->show();
我在 Qt 中自定义了 Window,现在面临调整大小的问题。
我想在我的 QWidget
(Qt::FramelessWindowHint
) 周围有一个免费的 space,这样我就可以在那个区域处理鼠标悬停+离开+按下+释放事件,在这个事件中我更改光标形状并调整小部件的大小。
(我不想要 widget 的 mouseEvent,但是 space)
我怎样才能得到这样的区域?
我想你的 QWidget
在某个时候被添加到 QLayout
。然后通过调用 [setContentsMargins].
QLayout
在其内容周围保留一些免费的 space
例如,您有:
QWidget* widget = new QWidget( parent );
parent->layout()->addWidget( widget );
然后,只需添加:
parent->layout()->setContentsMargins( 100,100,100,100 );
这将保证 widget
周围有 100 像素的空白区域。
为了更通用,如果你没有 parent,你可以像这样创建一个中间 QWidget
:
你有:
QWidget* myWidget = new QWidget( NULL );
widget->show();
就这样:
QWidget* parentWithEmptySpaceBorder = new QWidget( NULL );
parentWithEmptySpaceBorder->setLayout( new QVBoxLayout() );
parentWithEmptySpaceBorder->layout()->setContentsMargins( 100,100,100,100 );
QWidget* myWidget = new QWidget( NULL );
parentWithEmptySpaceBorder->layout()->addWidget( myWidget );
parentWithEmptySpaceBorder->show();