• 5200阅读
  • 12回复

请教一个问题,关于button按钮的 [复制链接]

上一主题 下一主题
离线sdyansong
 

只看楼主 倒序阅读 楼主  发表于: 2013-08-06
我以前创建按钮部分都是用ui设计器创建,但是最近我需要用代码写一个按钮,我写完后,程序编译没有问题,可是button却不显示。请大神给指导一下。


下面附上代码


void MainWindow::button(QDialog *)
{    Button = new QPushButton("change picture",this);    
Button->setGeometry(QRect(QPoint(300, 300),QSize(200, 50)));    
QVBoxLayout *layout = new QVBoxLayout;  
layout->addWidget(Button);  
setLayout(layout);
}
上面这段代码是添加按钮的那快代码。


离线jdwx

只看该作者 1楼 发表于: 2013-08-06
回 楼主(sdyansong) 的帖子
改一下:
void MainWindow::button(QDialog *)
{  
Button = new QPushButton("change picture",this);    
Button->setGeometry(QRect(QPoint(300, 300),QSize(200, 50)));   这行和下面的layout只能用一个,这行代表手动管理button大小 ,删除这行。
QVBoxLayout *layout = new QVBoxLayout;   这行有layout管理button大小
layout->addWidget(Button);  
QWidget *w = new QWidget(this);
w->setLayout(layout);

setCentralWidget(w);
setLayout(layout);问题在这里,QMainWindow需要一个widget作为中央窗口部件,这个widget可以任意复杂,包含任意的控件。button需要放在widget里。QMainWindow不支持setLayout,所以看不见。这行删除。
}
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线sdyansong

只看该作者 2楼 发表于: 2013-08-06
回 1楼(jdwx) 的帖子
先谢谢版主,我在尝试。非常感谢。
离线sdyansong

只看该作者 3楼 发表于: 2013-08-06
回 1楼(jdwx) 的帖子
版主,还是不可以,想请您在帮忙给看一下,小弟我把代码上传了一份,您给看下
附件: windows-picture.tar.gz (114 K) 下载次数:2
离线jdwx

只看该作者 4楼 发表于: 2013-08-06
回 3楼(sdyansong) 的帖子
没啥大问题,中文注释以后要注意使用,在你的机器上可能没问题,这些代码到别人的机器上肯定会出问题,
MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent)
{
    button(0);加上这一行,调用new出button的代码,button就能看见了。
    setFixedSize(800,480);
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线sdyansong

只看该作者 5楼 发表于: 2013-08-06
回 4楼(jdwx) 的帖子
谢谢版主,非常感谢,至于您说的中文注释问题我会注意的。非常感谢
离线sdyansong

只看该作者 6楼 发表于: 2013-08-07
回 4楼(jdwx) 的帖子
版主,再像您问个问题,为什么要添加   button(0)那个函数啊,不懂,请您给说明一下
离线祥龙九霄

只看该作者 7楼 发表于: 2013-08-07
估计他是想创建出这个对象,调用构造函数explicit QPushButton(QWidget *parent=0),否则不存在,不过这样创建对象好像不行吧。
离线jdwx

只看该作者 8楼 发表于: 2013-08-07
回 6楼(sdyansong) 的帖子
button这个函数不是你自己写的吗?
为什么是button(0),因为你写的函数还有个参数button(QDIalog*),
这样写button(0),调用这个函数时需要一个参数,空指针也算合格的参数,否则编译不过去。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线sdyansong

只看该作者 9楼 发表于: 2013-08-07
回 8楼(jdwx) 的帖子
恩,版主,我就想知道为什么要加上button()这个函数,为什么不加上button就不显示啊
离线sdyansong

只看该作者 10楼 发表于: 2013-08-07
回 7楼(祥龙九霄) 的帖子
不是很明白,能否说详细点
离线jdwx

只看该作者 11楼 发表于: 2013-08-07
回 9楼(sdyansong) 的帖子
new出button的代码你写在了button()这个函数里,不调用这个button函数当然没有button可用了。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线sdyansong

只看该作者 12楼 发表于: 2013-08-07
回 11楼(jdwx) 的帖子
谢谢版主
快速回复
限100 字节
 
上一个 下一个