C++/QT 值创建旋转框小部件时更改(整数)信号
C++/QT valueChanged(int) signal when spinbox widget being created
我现在正在尝试创建一个简单的GUI openGL绘图程序。
我使用 Line2dFactory(Shape2dFactory 的子类,它是 QWidget 的子类)类来接收各种输入小部件分配的值,然后将它们包装为 Line2d(Shape2d 的子类)对象并将对象发送到 openGL 小部件进行绘制。
Line2dFactory 类如下所示:
class Line2dFactory : public Shape2dFacotry
{
Q_OBJECT
public:
explicit Line2dFactory(QWidget *parent = 0);
~Line2dFactory();
signals:
// this is a member of Shape2dFacotory. for the purpose of
// illustration I put it here
void shape2dSent(Shape2d shape);
public slots:
// set begin and end points
void setX1(int i);
void setY1(int i);
void setX2(int i);
void setY2(int i);
// implement object creation, and emit the created object to display
void sendLine2d();
private:
int x1, y1, x2, y2;
Line2d line2d;
};
我将设置**(int)插槽连接到4个QSpinBox的ValueChanged(int)信号。按钮的点击()信号连接到sendLine2d()插槽。
程序启动后,如果我通过GUI更改QSpinBox中的所有值并单击按钮,则会创建一个对象并发送以显示。
但是,如果我不更改旋转框中的所有值(默认值为 0),则这些未更改的旋转框的信号似乎没有发送。因此,相应点的初始值是随机的int
。如果单击按钮,则程序将冻结计算机,因为它尝试计算可能很长的行。
我的问题是:我可以将 set** 插槽连接到什么信号以使工厂类知道 Qspinbox 的初始值?而且,更一般地说,对于其他 gui 组件?
我不想手动分配值,因为如果我决定更改默认值,我可能会忘记更改两者。
您可以在构造函数中初始化值
Line2dFactory(int p_x1, int p_x2, int p_x3, int p_x4, QWidget *parent = 0):
x1(p_x1),
x2(p_x2),
x3(p_x3),
x4(p_x4)
{
}
然后用你的旋转盒
QSpinBox sb1;
QSpinBox sb2;
QSpinBox sb3;
QSpinBox sb4;
Line2DFactor factory(sb1.value(), sb2.value(), sb3.value(), sb4.value());
或者相反,使用工厂提供的值初始化旋转框
QSpinBox sb1;
sb1.setValue(factory.getX1());
valueChanged(int)
只有当值已更改并且与旧信号不同时,QSpinBox
才会发送信号。AFAIK 您可以显式调用sb1.valueChanged(sb1.value())
它应该触发所有连接的插槽,但在构造函数中初始化 Line2DFactory
IMO 更好、更干净。
相关文章:
- 如何反转整数参数包
- enum是C++中的宏变量还是整数变量
- 努力将整数转换为链表。不知道我在这里做错了什么
- Qt VTK交互风格的信号到小部件
- 整数不会重复超过随机数
- 在C++中手动调整数组大小
- 检查输入是否不是整数或数字
- C++使用整数的压缩数组初始化对象
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 通过套接字[TCP]传输数据 如何在C / C ++中打包多个整数并使用send() recv()传输数据
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 如何只允许用户输入正整数
- 如何在c++中从文本文件中逐行读取整数
- 如何在没有信号的情况下从C++执行QML插槽
- C++:如何循环通过向量中的整数元素
- QT按钮组和可检查的按钮:如何将切换信号与整数和布尔值连接?
- C++/QT 值创建旋转框小部件时更改(整数)信号
- 在信号代码中将整数转换为函数指针-为什么这样做?