Qt QWidget::setGeomerty
Qt QWidget::setGeomerty
我被一个简单的Qt函数困住了,它对我不起作用。从QMainWindow和另一个继承自QWidget的类,然后我从第二个类中创建了一个成员对象(指针),并在构建窗口期间将其分配为其centralWidget。
当涉及到使用函数QWidget::setGeomerty()在窗口中调整我的centraWidget时,它根本不起作用。
void MainWindow::show()
{
//some code that centers my window on the screen
int margin=this->width()/7;
centralWidget()->setGeometry(margin,centralWidget()->geometry().top(),this->width()-margin,centralWidget()->geometry().bottom());
QMainWindow::show();
}
我知道这可能很愚蠢,但我就是想不通。
QMainWindow
有自己的布局,其中中心区域被中央小部件占据。因此,打破该布局并任意修改中央小部件的大小/位置并不是很简单。我建议使用占位符中央小部件并将您的小部件添加为子小部件。我很确定您可以通过为"占位符"中央小部件设置适当的内置 Qt 布局,然后将您的小部件添加到布局中来实现您想要的。
布局
对于管理我想要的东西是必要的;我认为不可能直接交出中央小部件并尝试移动/调整它的大小;但是通过添加布局和子小部件,我们可以处理它们。
主窗口.cpp
我专注于我的窗口构造函数
主窗口::主窗口(QWidget *parent) :
QMainWindow(parent),
m_MainView(新主视图(this)),
m_WindowLayout(new MainWindLayout(NULL))//my 自定义布局女巫只是继承自 QGridLayout
{
//.............
setCentralWidget(m_MainView);
m_WindowLayout=new MainWindLayout(m_MainView);//my layout set into my central Widget"m_MainView".
QWidget *temp(dynamic_cast<QWidget *>(m_MainView->centralView()));//centralView() returns a child QWidget of my central Widget
QMargins margins(this->width()/5,0,this->width()/5,0);//setting up layout margins :left,top,right,bottom;exactly what i need
m_WindowLayout->setContentsMargins( margins);
m_WindowLayout->addWidget(temp,0,0,-1,-1);//adding my child widget to the layout filling all cells of the gridlayout.
}
谢谢大家
相关文章:
- 如何在QT Creator上将QWidget声明为继承类的对象
- QWidget::p aintEngine:不应再在 QTreeWidget 派生类中调用
- 将一个 QWidget 链接到另一个新创建的 QWidget
- 为什么 isVisible 在 QWidget 孩子中不起作用
- 如何声明全局QWidget?
- QWidget UI 在使用 QQuickWidget 时冻结
- "(QWidget* pobj=0)"和"(QWidget* pwgt/*=0/)&quo
- qt QWidget::closeEvent link issue
- 如何在QMdiSubWindow关闭后删除QWidget
- 如何在QGraphicsView中移动QWidget?
- QPainter的QWidget滚动条
- 在类中创建 QWidget
- 在另一个小部件中更改QWidget的背景颜色
- 使用 QMediaPlayer 时出现"QWidget::paintEngine: Should no longer be called"
- QWidget收听其他QWidgets事件
- 为提升的小部件设置父 QWidget
- 如何制作可以缩放和绘制的画布QWidget?
- 在 QWidget 中的 QGraphicsScene 中绘制
- 如何将不在 QT 全局范围内的函数附加到 Qwidget 上
- Qt QWidget::setGeomerty