• 2404阅读
  • 4回复

[提问]求解一个很基础的程序。 [复制链接]

上一主题 下一主题
离线zmx_zmx_zmx
 
只看楼主 倒序阅读 楼主  发表于: 2013-03-08
1、window.h
#include <QMainWindow>
class mainwindow : public QMainWindow
{
    Q_OBJECT
public:
    mainwindow(QWidget *parent =0);
};

2、window.cpp
#include <QtGui>
#include "window.h"
mainwindow :: mainwindow (QWidget *parent ):QMainWindow(parent)
{
    QTextEdit *textedit = new QTextEdit(this);
    QPushButton *btn = new QPushButton(tr("&hello!"),this);
    QVBoxLayout *main= new QVBoxLayout(this);

    main->addWidget(textedit);
    main->addWidget(btn);
    connect(btn,SIGNAL(clicked()),this,SLOT(close()));
}

3、main.cpp
#include <QApplication>
#include "window.h"
int main(int argc,char **argv)
{
    QApplication app(argc,argv);
    mainwindow a;
    a.show();
    return app.exec();
}

问题
为什么在程序运行的时候layout不是我定义的那样,还出现了重定义了layout的提示啊?
离线zmx_zmx_zmx
只看该作者 1楼 发表于: 2013-03-08
自己1L
离线roywillow

只看该作者 2楼 发表于: 2013-03-09
这个是QMainWindow与QWidget的差别所在
QMainWindow有自己的layout,这个layout负责布局工具条、状态栏、浮动边栏和中央组件等,所以不要再去set它了
QMainWindow只允许有一个中央组件(centralWidget),你不可能把textedit和btn都作为中央组件布局在窗口中的
解决方法就是把一个QWidget作为centralWidget,然后在这个widget中进行布局
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线zmx_zmx_zmx
只看该作者 3楼 发表于: 2013-03-09
回 2楼(roywillow) 的帖子
谢谢~~~~太感谢了
离线zmx_zmx_zmx
只看该作者 4楼 发表于: 2013-03-09
回 2楼(roywillow) 的帖子
啊啊啊,太感谢了~~~~~~
快速回复
限100 字节
 
上一个 下一个