我在bicycle的构造函数里申请了个窗口,设置了大小和颜色,在main中,申请了个qvbox对象和bicycle指针,添加bicycle指针到qvbox里面右对齐,但是运行出来,主窗口里没有这个子窗口,这是为啥,下面是代码
main.cpp内容
QApplication a(argc, argv);
Qwidget w;
w. setFixedSize(800,600);
QVBoxLayout* layout=new QVBoxLayout(&w);
layout->setContentsMargins(0, 0, 0, 0);|
bicycle* bic=new bicycle;
layout->addWidget(bic,0, Qt::AlignRight);
w. show();
return a. exec();
bicycle.cpp内容
bicycle::bicycle(Qwidget*parent) :
Qwidget(parent),
ui(new Ui::bicycle)
{
ui->setupUi(this);
Qwidget bicwid;
bicwid. setFixedSize(250,600);
bicwid. setStyleSheet("bakcground-color:red;");
}
bicycle::~bicycle()
{
delete ui;
}
不知道你bicycle的ui里面有什么,但是你这段
Qwidget bicwid;
bicwid. setFixedSize(250,600);
bicwid. setStyleSheet("bakcground-color:red;")
是完全无效的,写了等于没写
所以如果你的ui文件里也没东西,那你的bicycle就是个空widget,加了跟没加看上去没区别
w. show();之前添加w.setLayout(layout);
解决你的问题,点赞采纳,谢谢!
【以下回答由 GPT 生成】
问题的原因是在bicycle.cpp中创建的bicycleWidget没有加入到它的父窗口中,所以无法显示出来。为了解决该问题,您需要将bicWidget设置为Bicycle类的成员变量,并在构造函数中将其添加到对应的布局中去。
解决方案如下:
bicycle.h内容
class Bicycle : public QWidget
{
Q_OBJECT
public:
explicit Bicycle(QWidget *parent = nullptr);
~Bicycle();
private:
Ui::Bicycle *ui;
QWidget *bikeWidget; // 添加一个成员变量
};
bicycle.cpp内容
Bicycle::Bicycle(QWidget *parent) :
QWidget(parent),
ui(new Ui::Bicycle)
{
ui->setupUi(this);
bikeWidget = new QWidget; // 创建bicycleWidget,并将其设置为Bicycle类的成员变量
bikeWidget->setFixedSize(250, 600);
bikeWidget->setStyleSheet("background-color:red;");
QVBoxLayout* layout = new QVBoxLayout(this); // 将布局设置为Bicycle类的父窗口
layout->setContentsMargins(0, 0, 0, 0);
layout->addWidget(bikeWidget); // 将bicycleWidget添加到布局中
}
Bicycle::~Bicycle()
{
delete ui;
}
通过上述修改,您的代码应该能正常显示主窗口和子窗口了。