方法
setHeight
和
setWidth
属于
DoubleRect
类应位于“专用插槽”部分。
public:
explicit DoubleRect(QWidget *parent = 0);
~DoubleRect();
int getWidth() const;
int getHeight() const;
public slots:
private slots:
void setHeight(int value);
void setWidth(int value);
编辑
什么时候
addRect
方法的构造函数中调用
双矩形
您分配信号
valueChanged()
带插槽的SpinBox-
设置高度
和
设置宽度
,然后要使用打印宽度和高度
qDebug()
,
但首先需要更改spinbox的值,以便可以调用插槽,并且可以设置宽度和高度。
您无法创建
obj
每次你打电话
addRect()
方法此对象只能创建一次。
然后进行信号插槽连接,当spinbox的值更改时,将调用插槽正确设置高度和宽度。
编辑2
您可以定义
双矩形
对象作为的成员
MainWindow
:
class MainWindow : public QMainWindow
{
Q_OBJECT
private:
Ui::MainWindow *ui;
QGraphicsScene * scene;
QGraphicsView * view;
DoubleRect* obj;
};
在主窗口的ctor中创建此对象
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
obj = new DoubleRect();
}
现在,当您更改SpinBox的值时,将调用slots setWidth/setHeight,并且调用“addRect”方法应该可以得到正确的值。
编辑3
我已经下载了您的项目,我使用QT 4.8.4,经过一些修改后它可以工作,所以
[1] 中的更改
doublerect。cpp公司
DoubleRect::DoubleRect(QWidget *parent) :
QWidget(parent),
ui(new Ui::DoubleRect)
{
ui->setupUi(this);
connect (ui->sb_rect_height, SIGNAL(valueChanged(int)), this, SLOT(setHeight(int)));
connect (ui->sb_rect_width, SIGNAL(valueChanged(int)), this, SLOT(setWidth(int)));
}
使用连接功能连接信号-插槽
[2] 中的更改
doublerect。h类
class DoubleRect : public QWidget
{
Q_OBJECT
public:
explicit DoubleRect(QWidget *parent = 0);
~DoubleRect();
int getWidth() const;
int getHeight() const;
public slots:
private slots:
void setHeight(int value);
void setWidth(int value);
private:
Ui::DoubleRect *ui;
int width;
int height;
};
最重要的是
主窗口。cpp公司
void MainWindow::addRect()
{
int height = ui->widgethide->getHeight();
int width = ui->widgethide->getWidth();
qDebug()<< height <<"This main height";
qDebug()<< width <<"This main width";
}
您不需要创建
双矩形
对象,此对象已存在,指向此对象实例的指针为
ui->widgethide
.