• 5903阅读
  • 5回复

求教Qt4达人 [复制链接]

上一主题 下一主题
离线genghui6
 
只看楼主 倒序阅读 楼主  发表于: 2009-07-07
我是用VS2008和QT4集成的,现在有个程序不能达到预期的效果,请达人帮忙看看,谢谢! 代码很简单,如下:
  1. QT1::QT1(QWidget *parent, Qt::WFlags flags)
  2. : QMainWindow(parent, flags)
  3. {
  4. layout = new QVBoxLayout(this);
  5. label = new QLabel("Test Hello", this);
  6. button = new QPushButton("Adam", this);
  7. slider = new QSlider(Qt::Horizontal, this);
  8. slider->setRange(0, 99);
  9. lcd = new QLCDNumber(2, this);
  10. QObject::connect(slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int)));
  11. layout->addWidget(label);
  12. layout->addWidget(button);
  13. layout->addWidget(lcd);
  14. layout->addWidget(slider);
  15. ui.setupUi(this);
  16. }


但是结果是几个组件都放到一起了,我想是让组件从上到下排列到QVBoxLayout组件里里面,运行结果都放到叠加到一起了!:
离线qindq

只看该作者 1楼 发表于: 2009-07-07
在ui.setupUi(this); 之前
加两句:
delete getLayout();
setLayout(layout );

但是, QMainWindow不是这样用的
建议你的主窗口改用QWidget
才是你想要的
离线genghui6
只看该作者 2楼 发表于: 2009-07-07
ls,加的这两句
delete getLayout();
setLayout(layout );
编译有错,不过我把QMainWindow改为了QWidget,然后把ui.setupUi(this); 删除了,就可以了,
问一下这个ui.setupUi(this); 有什么用吗?
离线qindq

只看该作者 3楼 发表于: 2009-07-07
引用第2楼genghui6于2009-07-07 14:39发表的  :
ls,加的这两句
delete getLayout();
setLayout(layout );
编译有错,不过我把QMainWindow改为了QWidget,然后把ui.setupUi(this); 删除了,就可以了,
问一下这个ui.setupUi(this); 有什么用吗?


哦,是
delete layout();
setLayout(layout );



ui.setupUi(this);
是把在设计器里设计的控件加载到窗口上
如果你的控件都是手工程序写的
这句话应该废掉
离线crazycat
只看该作者 4楼 发表于: 2009-07-08
一般情况下比较稳妥的做法是根据UI的类型派生出一个类,之后加入一个私有的Ui_XXX对象,再SetupUI即可,这样也方便以后的Connect和UI部件对象引用。
PS:LZ貌似发错版了…………
离线qlovet
只看该作者 5楼 发表于: 2009-07-11
我觉得用 UI 就不要自己在代码里添加Widget 改变Layout.

要不然就干脆不用Designer, 完全自己在代码里加。

混着用,容易出错
快速回复
限100 字节
 
上一个 下一个