使用Qt构建全屏布局

时间:2013-08-07 15:08:38

标签: c++ qt user-interface

我正在尝试使用qt和qt设计器创建一个简单的全屏webview,其中包含行编辑和上面的按钮,以创建一个非常简单的浏览器。

问题是布局不希望扩展以填充所有可用空间。我似乎认为我错过了一些非常简单的东西,但我似乎无法弄明白。

以下是我的布局概述

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

以下是MainWindow类的代码

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{

    ui->setupUi(this);
    ui->lineEdit->showFullScreen();
    ui->pushButton->showFullScreen();

    ui->webView->load(QUrl("http://google.com"));

    ui->webView->showFullScreen();

 }

这是主要代码

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.showMaximized();
    return a.exec();
}

看起来像这样,而不是webview和lineedit填充整个空间 enter image description here

无论如何在Qt中这样做,我会认为这是一个标准的事情。

非常感谢提前!

4 个答案:

答案 0 :(得分:0)

我认为你必须直接用上面的VBoxLayout替换GridView。 您使用的网格视图到底是什么?

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

答案 1 :(得分:0)

确保您的对象属性“sizePolicy”设置为Maximum,“maximumSize”为16777215,然后w.showFullscreen应该工作

答案 2 :(得分:0)

如果您希望窗口填满整个屏幕,隐藏任务栏和标题栏,则应替换为:

w.showMaximized();

用这个:

w.showFullScreen();

如果您希望您的行编辑和Web视图窗口小部件填充包含它们的窗口,“全屏”并不意味着您的想法。您的问题可能与您在设计师中的布局有关,而且我们在原始帖子中没有足够的信息来正确诊断它。鉴于您的UI在这一点上非常简单,最简单的方法可能是打破所有布局并重新开始。

无论你想要什么,你绝对不应该在你的行编辑,按钮或网页视图上调用showFullScreen()

答案 3 :(得分:0)

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

有关详细信息,请参阅此链接:http://embrisk.com/notes/qt_resize.html