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);
}
}
};
Проблема здесь в том, что я могу редактировать текст, если и только если я дважды щелкну текст.Один щелчок или что-то еще не работает.Я попытался изменить этот сигнал с двойного щелчка на одиночный щелчок, но это не помогло.
Пожалуйста, руководство.