1
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);
}
}
};
ここで問題となるのは、テキストをダブルクリックするだけで編集できることです。シングルクリックまたはそれ以外のものは動作しません。私はダブルクリックからシングルクリックにその信号を変えようとしましたが、助けにはなりませんでした。QListWidgetのテキストを実行時に1回クリックするだけで編集するには?
ご参考までに - いつもダブルクリックすると痛みがあります。
リンクは私が知っているさせるための –
おかげで死んでいます。当時のドキュメントはノキアが主催していました。リンクが再び機能しています。 – Exa