QWidget并没有显示在整个屏幕上



我是Qt的新手,在我的应用程序中面临问题。这就是我要做的。

我有一节课是以QWidget为家长的。这个类有一个网格布局。我将这个小部件设置为主窗口的中心小部件。(虽然这个小部件不是以主窗口为中心,但它运行得很好。)

现在我想把这个小部件旋转90度,这样它就可以在横向模式下显示在设备上。所以我创建了一个图形视图,并将这个小部件添加到其中。这是令人惊讶的工作,它是非常好的中心,看起来很好的设备,以及。

但在最终集成中,我们希望拥有所有QWidget,因此图形视图不是一个选项。为了解决这个问题,我在类中创建了一个Qwidget成员。应用了布局。将这个小部件添加到graphicsView,我的类就成为了它的父级。

这也有效,但有我在第一步中遇到的类似问题,它位于主窗口的左上角,不调整到中心。更糟糕的是,当部署在设备上时,它并没有应用于整个屏幕。小工具位于左上角区域的某个部分,并有滚动条!我甚至尝试将窗口状态设置为最大,但没有效果

以下是我尝试的

小部件是在我的类中创建的,并已添加到图形视图中。这个视图有我的类作为父级,它将通过使用rotateapi进行旋转。

m_gridContainer = new QWidget();
m_gridContainer->setAutoFillBackground(true);
m_gridContainer->setPalette(blackPalette);
m_gridContainer->setLayout(m_grid);
m_gridContainer->setMinimumSize(480,265);
m_scene = new QGraphicsScene(0, 0, 480, 265);
m_window = new QGraphicsView(m_scene,this);
m_scene->setBackgroundBrush(brush);
m_window->setAlignment(Qt::AlignCenter);    
m_scene->addWidget(m_gridContainer,Qt::Widget);

从主窗口使用

m_window = new CMyWidget(label, m_txtBox->text());    
m_window->getRotatedWidget(90);
setCentralWidget(m_window);

我尽了我所能,但这个小部件并没有全屏显示(只是在一个小区域),而且仍然有滚动条。我不知道那里到底发生了什么。

m_gridContainer作为图形场景的图形项部分,它不会接收主窗口的调整大小事件。

您必须在CMyWidget上处理resizeEvent(),并相应地调整m_gridContainer的大小,例如

void CMyWidget::resizeEvent ( QResizeEvent * event )
{
    m_gridContainer->resize(event->size());
}

顺便说一句,如果你在移动设备上处理旋转,它由Qt自己管理(只需调整主窗口的大小)。你不必在你的代码中这样做(你最终会得到一个看起来像旋转了两次的小部件)。

最新更新