gpt4 book ai didi

c++ - QLineEdit:是否有一种优雅的解决方案可以在事件处理程序中区分多个 QLineEdit 小部件?

转载 作者:行者123 更新时间:2023-11-27 23:26:55 25 4
gpt4 key购买 nike

我在配置小部件上有多个 QLineEdit 小部件。

当配置文本更改时,我想存储更新后的值(其中有几个,所以我不想在最后的一个函数调用中传递它们)。

我正在考虑将它们连接到一个插槽或通过 QSignalMapper 连接到一个插槽。

然而,我无法找到一种优雅的方式来区分 QLineEdit,我想知道哪个 QLineEdit 发出了信号 - 因为我在实现逻辑的处理程序对象中'将 sender() 与原始对象进行比较。

我可以通过 QSignalMapper 将它们连接起来,这样我的处理程序就可以获得 int idQObject*QWidget* 对发出信号的实际小部件的引用,以便我可以轻松获取新文本,但我希望能够打开某些 ID 以在内部更新正确的设置。

有没有优雅的方式来标记或标记 Qt 对象或小部件?

最佳答案

您可以使用值“int id”重写您自己的 QLineEdit。每当 QLineEdit 发出信号时,也会发出带有参数“id”的您自己的信号。

class MyLineEdit : public QLineEdit
{
Q_OBJECT
private: int id;
public: int getID() { return id; }
void setID(int _id) { id = _id; }
signals: void myTextEdited(QString,int);
slots: void emitMyTextEdited(QString text) { emit myTextEdited(text,id); }
public: MyLineEdit(QWidget *parent = 0) : QLineEdit(parent)
{
connect(this,SIGNAL(textEdited(QString)),this,SLOT(emitMyTextEdited(QString)));
}
};

在这里,如果你想发出带有对象标识的 textEdited 信号,你可以用你的方式重写 textEdited 信号。

关于c++ - QLineEdit:是否有一种优雅的解决方案可以在事件处理程序中区分多个 QLineEdit 小部件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8600205/

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