• 10087阅读
  • 6回复

【提问】问一个Qt中布局相关的问题 [复制链接]

上一主题 下一主题
离线deweyjew
 

只看楼主 倒序阅读 楼主  发表于: 2005-09-26
以下是测试代码:
/****************mywidget.h****************/
#ifndef MYWIDGET_H
#define MYWIDGET_H

#include <qwidget.h>
#include <qpushbutton.h>
#include <qmainwindow.h>

class MyWidget : public QMainWindow
{
public:
    MyWidget( QWidget *parent = 0, const char *name = 0 );
    QPushButton *pre;
    QPushButton *next;
};

#endif

/****************mywidget.h****************/
#include "mywidget.h"
#include <qlayout.h>

MyWidget :: MyWidget( QWidget *parent, const char *name)
    : QMainWindow( parent, name )
{
    QVBoxLayout *layout = new QVBoxLayout( this, 5, 5, "layout" );
    pre = new QPushButton("previous", this, "pre");    
    layout->addWidget(pre);
    next = new QPushButton("next", this, "next");
    layout->addWidget(next);
    resize( 100, 100);
}

运行的时候老是出现:QLayout "unnamed" added to QMainWindow "unnamed", which already has a layout

如果MyWidget继承于QWidget,就不会出现这样的提示。
这是什么原因呢?

如果我希望从QMainWindow继承,该如何修改呢?

望指点一下,thx a lot!
[ 此贴被XChinux在2005-09-26 16:37重新编辑 ]
离线XChinux

只看该作者 1楼 发表于: 2005-09-26
setLayout()没调用
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线deweyjew

只看该作者 2楼 发表于: 2005-09-26
帮助文档中好像没有这个函数,
查了一下,setLayout好像是私有函数,没法调用
那我该怎么修改一下才行呢?
thx a lot!
离线XChinux

只看该作者 3楼 发表于: 2005-09-26
bool QLayout::activate ()
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线deweyjew

只看该作者 4楼 发表于: 2005-09-27
好像不行诶,我加了layout->activate(),好像还是有原来的warning提示
这个具体怎么使用呢?
thx a lot!
离线XChinux

只看该作者 5楼 发表于: 2005-09-27
那就不知道了, 我只有Qt4版本
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线tasteprogram
只看该作者 6楼 发表于: 2005-09-27
你的代码没有问题呀!我的QT版本是3.3.2,你的版本是多少?
在我的3.3.2版本可以正常运行的。
***************main.cpp********************
#include <qapplication.h>
#include "mywidget.h"


int main( int argc, char** argv )
{
     QApplication app( argc, argv );

     MyWidget mainwindow;
     app.setMainWidget(&mainwindow);

     mainwindow.show();

     return app.exec();
}
*****************mywidget.cpp**************
#include "mywidget.h"
#include <qlayout.h>

MyWidget :: MyWidget( QWidget *parent, const char *name)
  : QMainWindow( parent, name )
{
  QVBoxLayout *layout = new QVBoxLayout( this, 5, 5, "layout" );
  pre = new QPushButton("previous", this, "pre");  
  layout->addWidget(pre);
  next = new QPushButton("next", this, "next");
  layout->addWidget(next);
  resize( 100, 100);
}
****************mywidget.h*******************
#ifndef MYWIDGET_H
#define MYWIDGET_H

#include <qwidget.h>
#include <qpushbutton.h>
#include <qmainwindow.h>

class MyWidget : public QMainWindow
{
public:
  MyWidget( QWidget *parent = 0, const char *name = 0 );
  QPushButton *pre;
  QPushButton *next;
};

#endif
*********************************************
还是用designer来设计界面比较好,将自己的代码放在*Impl.cpp中,这样即使以后使用designer改变界面也不会影响到自己写好的代码
快速回复
限100 字节
 
上一个 下一个