gpt4 book ai didi

c++ - 捕捉 QTableWidgetItem 检查状态变化

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:03:47 25 4
gpt4 key购买 nike

我有一个 QTableWidget,上面有一些 QTableWidgetsItems。有些项目使用复选框。我使用以下代码添加了复选框:

QTableWidgetsItem->setCheckState(Qt::Checked);

我现在想在这个复选框状态改变时调用一些函数。例如使用信号。

完成此任务最简单的方法是什么?

最佳答案

最简单的方法是在包含 QTableWidget 的类中用插槽捕获 QTableWidget 的信号。虽然看起来 QTableWidget::itemActivated 可能是我们最好的选择,但不确定当 Qt::CheckState 等于 时是否发出它Qt::已检查。此外,即使这是真的,信号也不会为您提供处理项目取消检查的功能,而您的应用程序可能需要这样做。

所以,这是我提出的解决方案。使用在包含 QTableWidget 的类中定义的插槽捕获 QTableWidget::itemPressedQTableWidget::itemClicked 信号。由于应该在释放鼠标按钮之前调用 itemPressed,并且应该在释放鼠标按钮之后调用 itemClicked,因此 QTableWidgetItem 的 Qt::CheckState 应该只设置在这两个信号发射之间。因此,您可以以低内存开销准确确定 QTableWidgetItem 的 checkState 何时更改。

以下是这些插槽的示例:

void tableItemPressed(QTableWidgetItem * item)
{
// member variable used to keep track of the check state for a
// table widget item currently being pressed
m_pressedItemState = item->checkState();
}

void tableItemClicked(QTableWidgetItem * item)
{
// if check box has been clicked
if (m_pressedItemState != item->checkState())
{
// perform check logic here
}
}

信号/槽的连接方式如下:

connect(m_tableWidget,SIGNAL(itemPressed(QTableWidgetItem *)),this,SLOT(tableItemPressed(QTableWidgetItem *)));
connect(m_tableWidget,SIGNAL(itemClicked(QTableWidgetItem *)),this,SLOT(tableItemClicked(QTableWidgetItem *)));

m_tableWidget 是您与表格小部件关联的 QTableWidget *

关于c++ - 捕捉 QTableWidgetItem 检查状态变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15456856/

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