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



我是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:尝试设置qlayout" qmainwindow", 已经有一个布局

实际上,您无法为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:我保留了您选择的惯例惯例,以使更改更加清晰。我宁愿使用 widtget 而不是 window window program

相关内容

  • 没有找到相关文章

最新更新