找回密码
 立即注册
收起左侧

关于代码界面控件分离出主窗口的问题

12
回复
8116
查看
[复制链接]
累计签到:11 天
连续签到:1 天
来源: 2021-11-6 09:51:04 显示全部楼层 |阅读模式
1Qter豆
问个很尴尬的小问题,我第一次尝试纯代码设计界面,为啥最后出来的结果是控件不在主窗口,反而在单独分离出来的一个窗口里面?
还显示:setGeometry: Unable to set geometry 30x15+121+18 on QWidgetWindow/'QPushButtonClassWindow'. Resulting geometry:  120x15+121+18 (frame: 8, 31, 8, 8, custom margin: 0, 0, 0, 0, minimum size: 0x0, maximum size: 16777215x16777215).

回复

使用道具 举报

累计签到:436 天
连续签到:1 天
2021-11-10 18:36:48 显示全部楼层
估计是你没设置父窗口
回复

使用道具 举报

累计签到:11 天
连续签到:1 天
2021-11-14 16:50:26 显示全部楼层
DemoCc 发表于 2021-11-10 18:36
估计是你没设置父窗口

啊这,还要设置?怎么设置?
回复

使用道具 举报

累计签到:436 天
连续签到:1 天
2021-11-14 21:23:12 显示全部楼层
setparent()或者在初始化的时候设置
回复

使用道具 举报

累计签到:11 天
连续签到:1 天
2021-11-26 20:56:36 显示全部楼层
DemoCc 发表于 2021-11-14 21:23
setparent()或者在初始化的时候设置

setparent()里面填什么?填this吗?
回复

使用道具 举报

累计签到:11 天
连续签到:1 天
2021-11-26 21:25:29 显示全部楼层
DemoCc 发表于 2021-11-14 21:23
setparent()或者在初始化的时候设置

我填的this结果崩溃了,怎么办
回复

使用道具 举报

累计签到:436 天
连续签到:1 天
2021-11-28 08:33:46 显示全部楼层
                        show you code
回复

使用道具 举报

累计签到:11 天
连续签到:1 天
2021-11-28 15:54:13 显示全部楼层
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QPushButton>
#include <QLabel>

class Widget : public QWidget
{
    Q_OBJECT

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

private:
    QPushButton *btn1;
    QPushButton *btn2;
    QLabel *lbl;
    void iniUI();
    void iniSignalSlots();
    void clicked1();

};

#endif // WIDGET_H

#include "widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    iniUI();
    iniSignalSlots();
    setWindowTitle("manual");
    setWindowFlags(Qt::WindowCloseButtonHint|Qt::MSWindowsFixedSizeDialogHint);
}

Widget::~Widget()
{
   
}

void Widget::iniUI()
{
    btn1=new QPushButton(tr("显示"));
    btn2=new QPushButton(tr("退出"));
    btn1->setGeometry(121,18,30,15);
    btn2->setGeometry(121,100,30,15);
    lbl=new QLabel;
    lbl->setGeometry(50,50,30,15);
    btn1->show();
    btn2->show();
    lbl->show();

}

void Widget::iniSignalSlots()
{
    connect(btn1,SIGNAL(clicked(bool)),this,SLOT(clicked1()));
    connect(btn2,SIGNAL(clicked(bool)),this,SLOT(close()));
}

void Widget::clicked1()
{
    lbl->setText("1");
}
这是加setparent之前的,我不知道加到哪里
回复

使用道具 举报

累计签到:11 天
连续签到:1 天
2021-12-4 21:08:06 显示全部楼层

是不是因为没用layout?可是我不想用啊
回复

使用道具 举报

累计签到:436 天
连续签到:1 天
2021-12-5 09:47:38 显示全部楼层
btn1->setparent(this);
btn2->setparent(this);
lbl->setparent(this);

然后调用成员函数move自己移动到哪里
不用show
回复

使用道具 举报

累计签到:436 天
连续签到:1 天
2021-12-5 10:03:18 显示全部楼层
建议你拿本书或者看下免费视频 学习下
回复

使用道具 举报

累计签到:11 天
连续签到:1 天
2021-12-11 10:45:22 显示全部楼层
DemoCc 发表于 2021-12-5 10:03
建议你拿本书或者看下免费视频 学习下

我也想看书用心学啊,问题是学到纯代码部分全都是layout起手的,网上找到的所有实例也全都是layout起手的,我就想找一个不带layout的就这么难吗?
回复

使用道具 举报

累计签到:472 天
连续签到:1 天
2022-7-15 15:13:21 显示全部楼层
控件需要setParent(主界面),或者主界面通过layout添加控件
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了