C++ 使用Qt构建全屏布局

C++ 使用Qt构建全屏布局,c++,qt,user-interface,C++,Qt,User Interface,我正在尝试使用qt和qt设计器来创建一个简单的全屏webview,上面有一个行编辑和一个按钮来创建一个真正简单的浏览器 问题是布局不希望扩展以填充所有可用空间。我似乎觉得我错过了一些非常简单的东西,但我就是想不出来 下面是我的布局概述 <MainWindow> <GridView> <VBoxLayout> <HBoxLayout> <li

我正在尝试使用qt和qt设计器来创建一个简单的全屏webview,上面有一个行编辑和一个按钮来创建一个真正简单的浏览器

问题是布局不希望扩展以填充所有可用空间。我似乎觉得我错过了一些非常简单的东西,但我就是想不出来

下面是我的布局概述

<MainWindow>
    <GridView>
        <VBoxLayout>
            <HBoxLayout>            
                <lineEdit /><PushButton /> 
            </HBoxLayout>
            <WebView />
        </VBoxLayout>
    </GridView>
</MainWindow>
这是主要代码

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.showMaximized();
    return a.exec();
}
它看起来像这样,而不是webview和lineedit占据了整个空间

在Qt中是否有这样做的必要,我会认为这是一个标准的事情


非常感谢

我认为您必须用正上方的VBoxLayout替换GridView。 您使用的网格视图是什么

<MainWindow>
    <VBoxLayout>
        <HBoxLayout>            
            <lineEdit /><PushButton /> 
        </HBoxLayout>
        <WebView />
    </VBoxLayout>
</MainWindow>


确保将对象属性“sizePolicy”设置为最大值,“maximumSize”设置为16777215,然后w.showFullscreen应该可以工作

如果您的意思是希望窗口填充整个屏幕,隐藏任务栏和标题栏,则应替换此选项:

w.showMaximized();
为此:

w.showFullScreen();
如果您的意思是希望行编辑和web视图小部件填充包含它们的窗口,“全屏”并不是指您所认为的功能。您的问题可能与designer中的布局有关,我们在您的原始帖子中没有足够的信息来正确诊断它。考虑到此时您的UI是多么简单,最简单的方法可能是打破所有布局,重新开始


无论您想要什么,您绝对不应该在行编辑、按钮或web视图上调用
showFullScreen()

我怀疑问题在于您在父窗口小部件中设置了BoxLayout,而不是将父窗口小部件设置为使用BoxLayout。在QtDesigner中,您应该能够右键单击父窗口小部件并设置布局,它将按您的需要展开。如果您只是从工具栏向小部件添加BoxLayout,它将不会自动展开以匹配其父项


查看此链接了解更多详细信息:

扩展Stephen Bell的回答(我愿意发表评论,但我缺乏声誉),因为我也花了一段时间才弄明白这一点

如果您已经完全设计了您希望全屏显示的布局,请右键单击屏幕最右侧的“主窗口”。应出现下拉列表。单击布局,然后单击栅格布局。主窗口应采用网格布局。在Qt Designer中,它不应该改变对象的位置。然而,它应该修复全屏


如果MainWindow没有布局,您的布局可能会有空白或死区而没有解释。

谢谢,但我想知道是什么对象。。?主窗口或webview
w.showFullScreen();