在Qt中动态地改变小部件的方法
change methods to widgets dynamically in Qt
我是Qt的新手,我尝试迭代10个控件并显示/隐藏它们。
switch (id)
{
case 1:
ui->lblSinglePulse1->hide();
ui->pbSinglePulse1->hide();
break;
case 2:
ui->lblSinglePulse2->hide();
ui->pbSinglePulse2->hide();
break;
case 3:
ui->lblSinglePulse3->hide();
ui->pbSinglePulse3->hide();
break;
case 4:
... and so on
我相信还有另一种方法可以动态传递小部件名称。例如:ui-> gettwidgetbyname ("lblSinglePulse" + "2")->hide();或者其他的…
, @Mat
发表评论你需要先把所有的控件添加到列表中,像这样
lblSinglePulseList.append(ui->lblSinglePulse1);
lblSinglePulseList.append(ui->lblSinglePulse2);
lblSinglePulseList.append(ui->lblSinglePulse3);
...
pblSinglePulseList.append(ui->pblSinglePulse1);
pblSinglePulseList.append(ui->pblSinglePulse2);
pblSinglePulseList.append(ui->pblSinglePulse3);
然后在函数
中使用listlblSinglePulseList[id - 1]->hide();
pblSinglePulseList[id - 1]->hide();
编辑:
如果ui->lblSinglePulse1的type为 label ,且ui->pbSinglePulse1的type为PushButton,则list init为
QList<Lable *> lblSinglePulseList;
QList<PushButton *> pblSinglePulseList;
我认为你可以这样做:
头文件。
class YourClass
{
public:
// ...
private:
void setHidden( const int aIndex, const bool aHidden );
void setAllVisible();
private:
QMap< int, QList< QWidget* > > m_Widgets; // This shall be a member of your class.
};
源文件。
YourClass::YourClass()
{
m_Widgets[ 0 ] << ui->lblSinglePulse1;
m_Widgets[ 0 ] << ui->pblSinglePulse1;
m_Widgets[ 1 ] << ui->lblSinglePulse2;
m_Widgets[ 1 ] << ui->pblSinglePulse3;
// And so ...
}
// To hide widgets at a given index.
void YourClass::setHidden( const int aIndex, const bool aHidden)
{
// First you need to set all items visible otherwise the result won't be the desired ... I think.
setAllVisible();
for ( auto item : m_Widgets[ aIndex ] )
{
item->setHidden( aHidden );
}
}
void YourClass::setAllVisible()
{
for ( auto items : m_Widgets )
{
for ( auto item : items )
{
item->setVisible( true );
}
}
}
相关文章:
- 最小硬币更换问题(自上而下方法)
- 在向量中查找大于 0(或通常为 k)的最小元素的最佳方法是什么?
- 有没有一种惯用的方法可以在不存储变换或不必要地重新计算的情况下找到数组变换的最小/最大值?
- 在QT中为小部件添加彩色边框的最佳方法是什么
- 从2D矢量中找出最小尺寸的向量元素的更好方法
- 从另一个线程更新QT小部件的一种详细方法
- 在CUDA中使用小M的两个MXN矩阵执行矢量点产品的最快方法是什么?
- 从向量中提取最小值、最大值和中位数的最有效方法是什么
- 在C++中将已签名/未签名的警告静音的侵入性最小的方法是什么?
- 最快/最小方法检查字符串是否包含多个单词
- 有没有一种无分支方法可以快速找到两个双精度浮点值的最小值/最大值
- 在映射最小值和最大值时从未签名转换为已签名的最佳方法?
- 在转换为较小的数值类型之前执行范围检查的安全、跨平台方法是什么
- Qt:在父小部件上有效地绘制小部件的正确方法
- 计算包含高维向量的两个矩阵之间的最小欧氏距离的最快方法
- 在 C++ 中,在矩阵中搜索最小值和最大值以及不同行或列的最快方法是什么
- C++ 创建小部件数组
- 创建一个cv::Mat的小列表并对其进行迭代的正确方法是什么
- 浮点的替代方法,用于存储简单的小数值
- 一次从文件中读取多行而不读取部分行的方法