我在Qt中创建了一个自定义窗口,现在面临调整问题的大小。
我想要QWidget
(Qt::FramelessWindowHint
)周围的空闲空间,以便我可以处理该区域中的鼠标悬停+离开+按下+释放事件,在此事件中我更改光标形状并调整大小小部件。
(我不希望mouseEvent用于小部件,但是用于该空间)
我怎么能得到这样的区域?
答案 0 :(得分:1)
我认为您的QWidget
会在某个时候添加到QLayout
。然后通过调用[setContentsMargins],只要求包含QLayout
在其内容周围保留一些可用空间。
示例,您有:
QWidget* widget = new QWidget( parent );
parent->layout()->addWidget( widget );
然后,只需添加:
parent->layout()->setContentsMargins( 100,100,100,100 );
这样可以保证widget
周围有100像素的空白区域。
为了更通用,如果你没有父,你可以像这样创建一个中间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();