class genericTaskList : public QListWidget
{
Q_OBJECT
public:
unsigned int rowCounter;
genericTaskList (QWidget *parentWidget)
{
setParent (parentWidget);
setFixedSize (445, 445);
QListWidgetItem *defaultText = new QListWidgetItem ("Double click here to compose the new task.");
defaultText->setFlags (defaultText->flags () | Qt :: ItemIsEditable);
rowCounter = 0;
insertItem (rowCounter, defaultText);
QObject :: connect (this, SIGNAL (itemDoubleClicked (QListWidgetItem*)), this, SLOT (addDefaultText (QListWidgetItem*)));
QObject :: connect (this, SIGNAL (itemChanged (QListWidgetItem*)), this, SLOT (addDefaultText (QListWidgetItem*)));
}
public slots:
void addDefaultText (QListWidgetItem*f)
{
// Returns the current row number.
unsigned int currentRow = row (f);
// Returns the current row text.
QString textOfCurrentRow = f->text ();
// The new default row should get inserted if and only if, the last row created has been double clicked and its default text has been changed.
if ((currentRow == rowCounter)
&& (textOfCurrentRow.toStdString () != "Double click here to compose the new task.")
&& (textOfCurrentRow.toStdString () != ""))
{
++rowCounter;
QListWidgetItem *defaultText = new QListWidgetItem ("Double click here to compose the new task.");
defaultText->setFlags (defaultText->flags () | Qt :: ItemIsEditable);
insertItem (rowCounter, defaultText);
setCurrentRow (rowCounter);
}
else if (textOfCurrentRow.toStdString () == "")
{
takeItem (rowCounter);
QListWidgetItem *defaultText = new QListWidgetItem ("Double click here to compose the new task.");
defaultText->setFlags (defaultText->flags () | Qt :: ItemIsEditable);
insertItem (rowCounter, defaultText);
setCurrentRow (rowCounter);
}
}
};
这里的问题是,当且仅当我双击文本时,我才能编辑文本。单击或其他任何操作均无效。我尝试将该信号从双击更改为单击,但没有帮助。
请指导 - 一直双击很痛苦。
最佳答案
您可以使用 QAbstractItemView::CurrentChanged
作为列表小部件的编辑触发器。这意味着如果您单击一个项目,它将是可编辑的。这不仅适用于单击它,还适用于使用箭头键在项目之间切换。不幸的是,没有“单击编辑”或类似内容的标志......
setEditTriggers( QAbstractItemView::CurrentChanged );
关于c++ - 如何通过单击它们在运行时编辑 QListWidget 中的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9413645/