E-comon 发表于 2021-11-6 09:51:04

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

问个很尴尬的小问题,我第一次尝试纯代码设计界面,为啥最后出来的结果是控件不在主窗口,反而在单独分离出来的一个窗口里面?
还显示: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).

DemoCc 发表于 2021-11-10 18:36:48

估计是你没设置父窗口

E-comon 发表于 2021-11-14 16:50:26

DemoCc 发表于 2021-11-10 18:36
估计是你没设置父窗口

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

DemoCc 发表于 2021-11-14 21:23:12

setparent()或者在初始化的时候设置

E-comon 发表于 2021-11-26 20:56:36

DemoCc 发表于 2021-11-14 21:23
setparent()或者在初始化的时候设置

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

E-comon 发表于 2021-11-26 21:25:29

DemoCc 发表于 2021-11-14 21:23
setparent()或者在初始化的时候设置

我填的this结果崩溃了,怎么办:(

DemoCc 发表于 2021-11-28 08:33:46

                        show you code:):)

E-comon 发表于 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之前的,我不知道加到哪里

E-comon 发表于 2021-12-4 21:08:06

DemoCc 发表于 2021-11-28 08:33
show you code

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

DemoCc 发表于 2021-12-5 09:47:38

btn1->setparent(this);
btn2->setparent(this);
lbl->setparent(this);

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

DemoCc 发表于 2021-12-5 10:03:18

建议你拿本书或者看下免费视频 学习下

E-comon 发表于 2021-12-11 10:45:22

DemoCc 发表于 2021-12-5 10:03
建议你拿本书或者看下免费视频 学习下

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

MarioZz 发表于 2022-7-15 15:13:21

控件需要setParent(主界面),或者主界面通过layout添加控件
页: [1]
查看完整版本: 关于代码界面控件分离出主窗口的问题