繁体   English   中英

我的Qt程序显示带有标题的空白窗口

[英]My Qt program showing blank window with title

我是Qt的新手,我有这段代码应该在Qt主窗口中显示一个滑块和数字框。 但是我所得到的只是主窗口本身,里面什么也没有。 我确实使用了show()函数,但没有任何反应

#include "mainwindow.h"
#include <QApplication>
#include <QSpinBox>
#include <QSlider>
#include <QHBoxLayout>
#include <QtGui/QApplicationStateChangeEvent>



int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QMainWindow program ;

    program.setWindowTitle("Title of window");


    QSpinBox *spinboxx = new QSpinBox();
    QSlider *slider = new QSlider(Qt::Horizontal);
    spinboxx->setRange(1,40);
    slider->setRange(1,40);

QObject::connect(spinboxx, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int)));
QObject::connect(slider, SIGNAL(valueChanged(int)), spinboxx, SLOT(setValue(int)));
QHBoxLayout *layout = new QHBoxLayout;

layout->addWidget(slider);
layout->addWidget(spinboxx);
program.setLayout(layout);
    program.show();

    return app.exec();
}

编译代码时有一个重要警告:

QWidget :: setLayout:尝试在已经有布局的QMainWindow“”上设置QLayout“”

实际上,您不能为QMainWindow设置布局,因为它具有自己的布局。 Qt5文档中

主窗口提供了用于构建应用程序用户界面的框架。 Qt具有用于主窗口管理的QMainWindow及其相关类。 QMainWindow有其自己的布局 ,您可以在其中添加QToolBars,QDockWidgets,QMenuBar和QStatusBar。 布局具有可被任何类型的小部件占据的中心区域。

您应该像这样将小部件分配给QMainWindow 程序

QWidget *window = new QWidget;
QSpinBox *spinboxx = new QSpinBox();
QSlider *slider = new QSlider(Qt::Horizontal);

QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(slider);
layout->addWidget(spinboxx);

window->setLayout(layout);


QMainWindow program ;
program.setWindowTitle("Title of window");
program.setCentralWidget(window);
program.show();

PS:我保留了您选择的名称约定,以使更改更清晰。 我宁愿使用小部件而不是窗口,窗口而不是程序

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM