- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
单选按钮有问题。
我创建了一个带有两个单选按钮的组框并将其设置为独占,这样当一个被选中时,另一个未被选中。
当我选中一个时,它连接到一个作为函数的插槽,因此它执行一个 Action ,更具体地说,更改比例并从 slider 转换值。
问题是当我错误地点击了已经选中的按钮时,因为即使它已经选中它仍然连接到函数并且 slider 的值再次更改,这是我不想要的。
这是他们的代码:
//Conect change from MM or PIXEL, making the change in the scale
connect(ui->radioButton, SIGNAL(pressed())), this, SLOT(mm()));
connect(ui->radioButton_2, SIGNAL(pressed()), this, SLOT(pixel()));
有没有办法在之前已经检查过的情况下阻止它?
我将在这里发布 mm() 和 pixel() 函数:
// Function to transform the slider scale from pixel to mm
void planevolume::mm()
{
// Set the sliders ranges and connections
// X Slider
double xvaluem=ui->Slider->value();
ui->Slider->setRange(xmin, xmax/(256.0/3.0), 1.0/(256.0/3.0));
ui->Slider->setValue(xvaluem/(256.0/3.0));
ui->Slider->setScale(xmin, (xmax+1.0)/(256.0/3.0), ((xmax+1.0)/16.0)/(256.0/3.0));
connect(ui->Slider, SIGNAL(valueChanged(double)), ui->lcdNumber, SLOT(display(double)));
// Y Slider
double yvaluem=ui->Slider_2->value();
ui->Slider_2->setRange(ymin, ymax/(512.0), 1.0/(512.0));
ui->Slider_2->setValue(yvaluem/(512.0));
ui->Slider_2->setScale(ymin, (ymax+1.0)/512.0, (((ymax+1.0)/16.0)/512.0));
connect(ui->Slider_2, SIGNAL(valueChanged(double)), ui->lcdNumber_2, SLOT(display(double)));
// Z Slider
double zvaluem=ui->Slider_3->value();
ui->Slider_3->setRange(zmin, zmax/(64.0/3.0), 1.0/(64.0/3.0));
ui->Slider_3->setValue(zvaluem/(64.0/3.0));
ui->Slider_3->setScale(zmin, (zmax+1.0)/(64.0/3.0),(((zmax+1.0)/16.0)/(64.0/3.0)));
connect(ui->Slider_3, SIGNAL(valueChanged(double)), ui->lcdNumber_3, SLOT(display(double)));
}
// Function to transform the slider scale from mm to pixel
void planevolume::pixel()
{
// Set the sliders ranges and connections
// X Slider
double xvaluep=ui->Slider->value();
ui->Slider->setRange(xmin, xmax, 1.0);
ui->Slider->setValue(xvaluep*(256.0/3.0));
ui->Slider->setScale(xmin, xmax+1.0, (xmax+1.0)/16.0);
connect(ui->Slider, SIGNAL(valueChanged(double)), ui->lcdNumber, SLOT(display(double)));
// Y Slider
double yvaluep=ui->Slider_2->value();
ui->Slider_2->setRange(ymin, ymax, 1.0);
ui->Slider_2->setValue(yvaluep*(512.0));
ui->Slider_2->setScale(ymin, ymax+1.0, (ymax+1.0)/16.0);
connect(ui->Slider_2, SIGNAL(valueChanged(double)), ui->lcdNumber_2, SLOT(display(double)));
// Z Slider
double zvaluep=ui->Slider_3->value();
ui->Slider_3->setRange(zmin, zmax, 1.0);
ui->Slider_3->setValue(zvaluep*(64.0/3.0));
ui->Slider_3->setScale(zmin, zmax+1.0, (zmax+1.0)/16.0);
connect(ui->Slider_3, SIGNAL(valueChanged(double)), ui->lcdNumber_3, SLOT(display(double)));
}
最佳答案
您可以尝试使用 toggled(bool)
信号,而不是使用 pressed()
信号。仅当按钮更改状态时才会发出此信号。看看:http://doc.qt.io/qt-4.8/qabstractbutton.html#toggled
编辑:如果两个按钮都连接到 toggled(bool)
,那么选中一个将取消选中另一个并触发信号。但请注意,该信号有一个 bool
给出按钮的新状态。您的插槽还必须具有此 bool
参数,即在您的情况下,您需要将插槽重写为 void planevolume::mm(bool on)
和 void planevolume::pixel(bool on)
.
完成此操作后,您可以简单地检查参数的值。如果它是 false
则表示该按钮已被选中,现在刚刚被取消选中。然后,你的两个函数的第一行可以很简单
if (!on) return;
意思是,如果单选按钮刚刚被取消选中,什么也不做,走开。
关于qt - qradiobutton问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12108861/
我遇到一种情况,我需要从测试人员那里获取 PySide GUI 中每个测试步骤的通过/失败信息。现在,我正在 for 循环中运行测试套件的数据,并尝试在 for 循环中获取 QRadioButton
我正在用不同级别的 QRadioButton 构建一个 QWidget。换句话说,我的小部件包含一些单选按钮和一个也包含单选按钮的子小部件(在屏幕截图中标记为 groupBox)。 这是我的问题:gr
在我的表单构造函数中,我检查各种成员的状态,然后根据单选按钮的状态用 true 或 false 调用 setChecked。 我原以为这会调用与单选按钮关联的回调/插槽,但它没有或没有工作。例如,我的
我正在开发 QT 应用程序。用户可以在其中创建多个对象,每个对象都将添加到一个列表中。在下一步中,用户应定位对象。选择放置哪个对象,应通过单击 QRadioButtons 进行(看起来合乎逻辑,因为添
我正在为学校开展一个小组项目。我组的一个成员创建了一个有大约 75 个单选按钮的窗口。我想在按下按钮时强制所有这些都“清除”或“未选中”。 有人知道这样做的好方法吗?我一直在研究 QObjectLis
我正在尝试将选中和取消选中的单选按钮的颜色更改为 Qt 样式表:Qt Stylesheet 但在此链接中,它仅指加载图像,但我如何更改它的颜色而不加载图像并更改边框颜色或样式单选按钮 要求附在图片中:
这是我的代码。如何在下次打开程序时将上次单击/选中的按钮存储为默认值?例如:如果我们运行程序并单击第三个按钮并关闭整个程序。每当我重新打开/重新运行程序时,默认情况下会选中最后一次单击的按钮(即默认情
我正在使用 C++ 和 QT 创建一个软件,我有两个小部件,一个是 QRadioButon 类型,一个是 QTabWidget。我的需求是我想从广播按钮发送信号,并且我希望每当检查按钮时,标签的内容都
目前我的表单上有一个 QRadioButton - 在表单的构造函数中 我正在做这样的事情 ui.radioButton->setChecked(true); 我在该语句中收到以下错误 Access
我需要将我的应用程序中所有单选按钮的尺寸调大...但是,我似乎只能将它们调小。 使用 "QRadioButton::indicator{width: 13px;height: 13px;}" 有效..
我正在尝试创建在任何时候只有一个处于事件状态的单选按钮。我试过使用 QButtonGroup 并将其设置为独占。但是它似乎不起作用。我的代码如下: from PyQt4 import QtGui, Q
我使用下面的代码动态创建了一组单选按钮: self.wPaymantType.qgbSomeSelectionGroup = QtGui.QGroupBox() vbox = QtGui.QVBoxL
我试图让 QRadioButton 的大小随着窗口的大小而改变。我需要的是,当我将窗口的大小调整为变大(或变小)时,QRadioButton 也应该调整为变大(或变小)。 我尝试使用我用于QPushB
例如,我有四个QRadioButtonrb1、rb2、rb3、rb4 。我设置了 rb1 和 rb3 选中: rb1->setChecked(true); rb3->setChecked(true);
我创建了几个 QradioButton 并连接到同一个 SLOT。在插槽中,我想知道哪个 QradioButton 调用插槽并执行相关操作。我发现有一种使用 qobject_cast 和 QObjec
我发现与选中/取消选中 QRadioButton 相关的问题。我用于检查(白点)和取消检查(没有白点)的图像未更新。我的问题是:我已经实现了一些 QRadioButton。第一次所有 QRadioBu
我正在做一个测验,当有人答错问题时,我想告诉他们他们答错了,正确答案是什么。我从数据库中获取问题,并在每次按下下一个按钮时设置文本 print("You chose the incorrect ans
问题 我的软件中有超过 5 个单选按钮,当我单击单选按钮时我想要它 然后与该按钮相关的文本出现在 Qtab 小部件中。 但我尝试了很多,但是当我点击一个单选按钮时,与该单选按钮相关的文本 不会出现在
这是我的代码,非常简单: #include "mainwindow.h" #include "ui_mainwindow.h" #include #include #include MainWi
我正在尝试使用标准 QCheckbox/QRadioButton 使用 Qt 来创建多行复选框/单选按钮。 我没有找到直接解决方案,因为 QRadioButton{wrap:true;}没有效果。 唯
我是一名优秀的程序员,十分优秀!