有人知道獲取放置在 QList<QWidget *> 中的 QPushButton 屬性的解決方案嗎?
.h
QList<QWidget *> list;
.cpp
QPushButton *button = new QPushButton("Push", this);
list->append(button);
qDebug() << list.at(0)->text(); // Not working : text() is not a property of QWidget but a property of QPushButton
謝謝
uj5u.com熱心網友回復:
這個問題更多地與c 一般的多型性有關,而不是任何特定于Qt. 表達方式...
list.at(0)
回傳一個QWidget *。因此呼叫...
list.at(0)->text()
編譯失敗,因為QWidget沒有名為 的成員函式text。如果您認為回傳的指標指向list.at(0)特定的子類,QWidget那么您需要在使用它之前對其進行向下轉換并檢查結果。例如
if (auto *b = dynamic_cast<QPushButton *>(list.at(0)))
qDebug() << b->text();
或者——因為你正在使用Qt——你可以qobject_cast以類似的方式使用......
if (auto *b = qobject_cast<QPushButton *>(list.at(0)))
qDebug() << b->text();
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/429972.html
標籤:qt qwidget qpushbutton 清单
上一篇:如何設定標簽之間的固定距離
