在Qt的QStandardItem中添加按钮,并在其他地方调用它,你可以使用自定义的QStandardItem派生类。下面是一个简单的示例:
首先,创建一个自定义的QStandardItem派生类,例如ButtonItem。在该类中,我们添加一个QPushButton成员变量以及相应的getter和setter方法。
class ButtonItem : public QStandardItem
{
public:
explicit ButtonItem(const QString& text, QPushButton* button)
: QStandardItem(text), m_button(button)
{}
QPushButton* button() const { return m_button; }
void setButton(QPushButton* button) { m_button = button; }
private:
QPushButton* m_button;
};
然后,在你的代码中使用这个自定义的ButtonItem。你可以将其添加到QStandardItemModel中,并设置对应位置上的按钮。
// 创建一个按钮
QPushButton* button = new QPushButton("Click Me");
// 创建一个自定义的ButtonItem,并将按钮作为参数传入
ButtonItem* item = new ButtonItem("Item 1", button);
// 获取按钮并连接信号槽
QPushButton* storedButton = item->button();
connect(storedButton, &QPushButton::clicked, [](){
qDebug() << "Button clicked!";
});
// 将项添加到模型中
QStandardItemModel model;
model.appendRow(item);
现在,在其他地方(如点击事件或其他函数)调用存储在ButtonItem中的按钮时,你可以通过获取该按钮来实现。
void MyClass::someFunction()
{
// 从模型中获取保存的ButtonItem
QModelIndex index = model.index(row, column);
ButtonItem* item = dynamic_cast<ButtonItem*>(model.itemFromIndex(index));
if (item)
{
// 获取按钮并执行操作
QPushButton* storedButton = item->button();
storedButton->click(); // 调用按钮的点击事件
}
}
请注意,这只是一个简单示例,你可以根据实际需求进行修改和扩展。
内容由零声教学AI助手提供,问题来源于学员提问