请问一下我在Qt一应用程序中,在构造函数里面写的widget比如按钮这些,运行后都无法显示,只有一空白窗体

我很郁闷的是有时一些程序会正常显示出来有时却不行,这些程序还是按照教材中的例子打的,唉,先谢谢了... 我很郁闷的是有时一些程序会正常显示出来有时却不行,这些程序还是按照教材中的例子打的,唉,先谢谢了 展开
 我来答
mileelove
2011-01-21 · TA获得超过454个赞
知道小有建树答主
回答量:183
采纳率:0%
帮助的人:325万
展开全部
如果说你的按钮没有显示,最有可能的原因是你没有将按钮的父窗口设置成你自定义的Widget
比如说你自定义了一个 Widget,它继承自 QWidget,示意如下:
//widget.h
#ifndef WIDGET_H
#define WIDGET_H

#include <QtGui/QWidget>
#include <QPushButton>

class Widget : public QWidget
{
Q_OBJECT

public:
Widget(QWidget *parent = 0);
~Widget();

private:
QPushButton buttonA;
QPushButton buttonB;
QPushButton* pButton;
};

#endif // WIDGET_H
在上面的头文件中定义了两个button以及一个指针,下面是源文件
//widget.cpp
#include "widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
buttonA.setText("buttonA");
buttonB.setText("buttonB");
//在构造pButton时指定Widget为pButton的父窗口
//注意:由于pButton继承自QObject并且你为他指定了父窗口,
//父类中的QObjetc会对pButton的内存进行管理,并在合适的时候释放内存,
//所以你不需要在Widget的析构函数中去进行delete pButton的操作,
//建议使用new这种方式来构造子控件
pButton = new QPushButton(this);
pButton->setText("buttonC");
//指定Widget为buttonA和buttonB的父窗口
//如果你不指定他们的父窗口,那么这些控件将不可见
//你可以注释下两行中的某条语句,来测试控件是否可见
//目前两个控件都是可见的
buttonA.setParent(this);
buttonB.setParent(this);
//移动控件到相应的坐标点
buttonA.move(100,100);
buttonB.move(100,150);
pButton->move(100,200);
}

Widget::~Widget()
{
}
//main.cpp

#include <QtGui/QApplication>
#include "widget.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}

这就是整个示例程序了,总的来说,要想窗体中的控件可见,你必须将该窗体设置成这些控件的父窗口。
riyue1108
2011-01-21 · TA获得超过394个赞
知道小有建树答主
回答量:435
采纳率:0%
帮助的人:351万
展开全部
楼上你这样的方法对于QT编程是多余的。这是在MFC里面才用的方法。
//移动控件到相应的坐标点
buttonA.move(100,100);
buttonB.move(100,150);
pButton->move(100,200);
QT有他自己的布局管理器。你可以不用在意他的坐标,但他可以帮你显示出最好的位置。
比如我接楼上的例子。虽然楼上让按钮显示出来了。但是楼主你其实没有把你的按钮添加到一个布局里去。这样你也可以不用指定父对象,QT会自动生成父子关系!

QVBoxLayout* mainLayout=new QVBoxLayout;\\创建一个竖排的布局
mainLayout->addWidget(&buttonA);
mainLayout->addWidget(&buttonB);
mainLayout->addWidget(pbutton);
setLayout(mainLayout);
这样就可见了
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式