0

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

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

这是我的布局的概述

<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 填充了整个空间 在此处输入图像描述

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

提前谢谢了!

4

5 回答 5

0

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

<MainWindow>
    <VBoxLayout>
        <HBoxLayout>            
            <lineEdit /><PushButton /> 
        </HBoxLayout>
        <WebView />
    </VBoxLayout>
</MainWindow>
于 2013-08-07T15:16:46.630 回答
0

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

于 2013-08-07T15:17:03.157 回答
0

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

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

于 2013-10-28T00:43:36.937 回答
0

如果你的意思是你想让窗口填满整个屏幕,隐藏任务栏和标题栏,你应该替换这个:

w.showMaximized();

有了这个:

w.showFullScreen();

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

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

于 2013-08-07T17:17:39.340 回答
0

扩展斯蒂芬贝尔的回答(我会发表评论,但我缺乏声誉),因为我也花了一段时间才弄清楚这一点。

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

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

于 2015-05-10T17:55:02.540 回答