Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基本Qt布局:添加到框架_Qt_Qt5 - Fatal编程技术网

基本Qt布局:添加到框架

基本Qt布局:添加到框架,qt,qt5,Qt,Qt5,我只是盯着Qt,所以希望这是一个新手问题。在Qt Creator 2.7.2、Qt 5和标准桌面应用程序中工作 目前我的应用程序是一个窗口,主窗口完全由控制台对象占据,只有纯文本编辑,如下所示: setCentralWidget(console); 这当然占据了整个窗口。因此,我使用UI编辑器添加了一个框架,frame_2。如何使控制台显示在框架内,而不是占据整个窗口? 您的中心小部件只是QWidget,然后它需要一个布局。将布局拖到其中,Qt Designer顶部有一些按钮用于打开和关闭布

我只是盯着Qt,所以希望这是一个新手问题。在Qt Creator 2.7.2、Qt 5和标准桌面应用程序中工作

目前我的应用程序是一个窗口,主窗口完全由控制台对象占据,只有纯文本编辑,如下所示:

setCentralWidget(console);
这当然占据了整个窗口。因此,我使用UI编辑器添加了一个框架,frame_2。如何使控制台显示在框架内,而不是占据整个窗口?

您的中心小部件只是
QWidget
,然后它需要一个布局。将布局拖到其中,Qt Designer顶部有一些按钮用于打开和关闭布局

调用
setupUi
时,它已经为您执行了
setCentralWidget
调用。如果您自己称之为Qt Designer,那么您将失去使用Qt Designer所获得的一切

ui->setupUi(this);
如果您使用的是Qt Designer,则不应编辑任何生成的文件。如果再次编辑.ui文件,它可能会再次为您生成ui_uh文件并修复该问题

以下是生成的文件ui_mainwindow.h的示例:

/********************************************************************************
** Form generated from reading UI file 'mainwindow.ui'
**
** Created: Wed Jul 10 15:48:32 2013
**      by: Qt User Interface Compiler version 4.8.4
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/

#ifndef UI_MAINWINDOW_H
#define UI_MAINWINDOW_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QHeaderView>
#include <QtGui/QMainWindow>
#include <QtGui/QMenuBar>
#include <QtGui/QStatusBar>
#include <QtGui/QToolBar>
#include <QtGui/QWidget>

QT_BEGIN_NAMESPACE

class Ui_MainWindow
{
public:
    QMenuBar *menuBar;
    QToolBar *mainToolBar;
    QWidget *centralWidget;
    QStatusBar *statusBar;

    void setupUi(QMainWindow *MainWindow)
    {
        if (MainWindow->objectName().isEmpty())
            MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
        MainWindow->resize(400, 300);
        menuBar = new QMenuBar(MainWindow);
        menuBar->setObjectName(QString::fromUtf8("menuBar"));
        MainWindow->setMenuBar(menuBar);
        mainToolBar = new QToolBar(MainWindow);
        mainToolBar->setObjectName(QString::fromUtf8("mainToolBar"));
        MainWindow->addToolBar(mainToolBar);
        centralWidget = new QWidget(MainWindow);
        centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
        // !!!!! NOTE !!!!! setCentralWidget gets called
        MainWindow->setCentralWidget(centralWidget);
        statusBar = new QStatusBar(MainWindow);
        statusBar->setObjectName(QString::fromUtf8("statusBar"));
        MainWindow->setStatusBar(statusBar);

        retranslateUi(MainWindow);

        QMetaObject::connectSlotsByName(MainWindow);
    } // setupUi

    void retranslateUi(QMainWindow *MainWindow)
    {
        MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", 0, QApplication::UnicodeUTF8));
    } // retranslateUi

};

namespace Ui {
    class MainWindow: public Ui_MainWindow {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_MAINWINDOW_H
/********************************************************************************
**从读取UI文件“mainwindow.UI”生成的表单
**
**创建时间:2013年7月10日星期三15:48:32
**作者:Qt用户界面编译器版本4.8.4
**
**警告!重新编译UI文件时,此文件中所做的所有更改都将丢失!
********************************************************************************/
#ifndef UI\u主窗口\u H
#定义UI\u主窗口
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
QT_开始名称空间
类Ui_主窗口
{
公众:
QMenuBar*菜单栏;
QToolBar*主工具栏;
QWidget*centralWidget;
QStatusBar*状态栏;
无效设置UI(QMainWindow*MainWindow)
{
如果(MainWindow->objectName().isEmpty())
MainWindow->setObjectName(QString::fromUtf8(“MainWindow”);
主窗口->调整大小(400300);
菜单栏=新的QMenuBar(主窗口);
菜单栏->设置对象名(QString::fromUtf8(“菜单栏”);
主窗口->设置菜单栏(菜单栏);
mainToolBar=新的QToolBar(主窗口);
mainToolBar->setObjectName(QString::fromUtf8(“mainToolBar”);
主窗口->添加工具栏(主工具栏);
centralWidget=新的QWidget(主窗口);
centralWidget->setObjectName(QString::fromUtf8(“centralWidget”);
//!!!!!注意!!!!!调用setCentralWidget
主窗口->设置中心Widget(中心Widget);
statusBar=新的QStatusBar(主窗口);
statusBar->setObjectName(QString::fromUtf8(“statusBar”);
主窗口->设置状态栏(状态栏);
重传(主窗口);
QMetaObject::connectSlotsByName(主窗口);
}//setupUi
无效重新传输(QMainWindow*MainWindow)
{
MainWindow->setWindowTitle(QApplication::translate(“MainWindow”,“MainWindow”,0,QApplication::UnicodeTf8));
}//重新翻译
};
名称空间用户界面{
类主窗口:公共Ui_主窗口{};
}//名称空间用户界面
QT_END_名称空间
#endif//UI\u主窗口
我还在上一篇文章中漫谈了如何使用布局:


希望对您有所帮助。

UI编辑器设置中心小部件本身。如果您只想获得在Designer中看到的内容,请不要调用
setCentralWidget
。但是请确保您已经向中心小部件(以及表单中的框架和所有其他容器)添加了一个布局?在mainwindow.h中创建一个成员变量,如下所示:
Console*m\u Console然后在
ui->setupUi之后(这个)在主窗口的构造函数中,放置
m_console=new console()
ui->frame_2->addWidget(m_控制台)