gpt4 book ai didi

c++ - Qt,两个QWidget对象之间的简单连接

转载 作者:行者123 更新时间:2023-11-30 00:53:59 26 4
gpt4 key购买 nike

我有一个继承自 QMainWindow 的类和两个继承自 QWidget 的类。我将这两个 QWidget 对象添加到我的 QMainWindow 对象中,我想在这两个 QWidget 对象之间创建一个连接(其中一个包含 QPushButton 对象)。不幸的是,不想工作...

代码:

主机:

#ifndef MAINFRAME_H
#define MAINFRAME_H

#include <QtGui/QMainWindow>
#include "DrawComponent.h"
#include "ControllComponent.h"

class MainFrame : public QMainWindow
{
Q_OBJECT

public:
DrawComponent *dComponent;
ControllComponent *cComponent;
MainFrame();

};

#endif
#include "MainFrame.h"
#include "DrawComponent.h"
#include "ControllComponent.h"
#include <iostream>

using namespace std;

MainFrame :: MainFrame()
{
this->setGeometry(100, 100, 640, 480);

this->dComponent = new DrawComponent(this);
this->cComponent = new ControllComponent(this);

QObject::connect(this->cComponent->rysuj1, SIGNAL(clicked()), this, SLOT(dComponent->draw1));
}

第一个 QWidget 类

#ifndef DRAWCOMPONENT_H
#define DRAWCOMPONENT_H

#include <QtGui/QMainWindow>
#include <qwidget.h>

class DrawComponent : public QWidget
{
Q_OBJECT

public:
DrawComponent(QMainWindow *parent);

public slots:
void draw1();

};

#endif
#include "DrawComponent.h"
#include <qpushbutton.h>
#include <qgridlayout.h>

using namespace std;

DrawComponent :: DrawComponent(QMainWindow *parent)
{
this->setParent(parent);
this->setGeometry(0, 0, 500, 480);

QPalette p(palette());
p.setColor(QPalette::Background, Qt::black);

this->setPalette(p);
this->setAutoFillBackground(true);
this->show();
}

void DrawComponent :: draw1()
{
QPalette p(palette());
p.setColor(QPalette::Background, Qt::blue);

this->setPalette(p);
}

第二个 QWidget 类

#ifndef CONTROLLCOMPONENT_H
#define CONTROLLCOMPONENT_H

#include <QtGui/QMainWindow>
#include <qwidget.h>
#include <qpushbutton.h>

class ControllComponent : public QWidget
{
Q_OBJECT

public:
QPushButton *rysuj1;
ControllComponent(QMainWindow *parent);

};

#endif
#include "ControllComponent.h"
#include <qpushbutton.h>
#include <qgridlayout.h>

ControllComponent :: ControllComponent(QMainWindow *parent)
{
this->setParent(parent);
this->setGeometry(500, 0, 140, 480);

QPalette p(palette());
p.setColor(QPalette::Background, Qt::red);
this->setPalette(p);
this->setAutoFillBackground(true);

this->rysuj1 = new QPushButton(tr("draw1"), this);
this->rysuj1->setGeometry(45, 10, 50, 50);
this->rysuj1->show();

this->show();
}

最佳答案

rysuj1clicked() 信号连接到 dComponentdraw1() 插槽的调用

QObject::connect(this->cComponent->rysuj1, SIGNAL(clicked()), 
this, SLOT(dComponent->draw1));

需要

QObject::connect(this->cComponent->rysuj1, SIGNAL(clicked()), 
dComponent, SLOT(draw1()));

关于c++ - Qt,两个QWidget对象之间的简单连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15111687/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com