我在 QT 中創建了一個自定義小部件,我在我的主程式中使用它,但我不能使用來自 QLineEdit 的信號,我該怎么做?,這是 mi 代碼:
search = new Search_browser(ui->widget);
connect(search, SIGNAL(returnPressed()), this, SLOT(set_page()));
Search_browser 有一個 QLineEdit,這就是我嘗試使用returnPressed()
信號的原因,這應該在我的 MainWaindow 中呼叫一個函式來設定頁面,但我收到此錯誤:
QObject::connect: No such signal Search_browser::returnPressed()
自定義小部件的頭檔案:
class Search_browser : public QWidget
{
Q_OBJECT
public:
Search_browser(QWidget *parent = nullptr);
~Search_browser();
QString get_url();
public slots:
void replyFinished(QNetworkReply *reply);
void get_request();
private:
QLineEdit *lineEdit;
QCompleter *completer;
QStringList wordList;
};
我認為我必須自己實作信號,但我不知道如何。
uj5u.com熱心網友回復:
您聚合QLineEdit
,Search_browser
所以現在它是封裝的(私有的),為了使它可以從外部世界(從MainWindow
)訪問,您可以做以下兩件事之一:向它添加訪問器并連接到回傳值。
class Search_browser : public QWidget {
...
QLineEdit *getLineEdit() {return lineEdit;}
};
connect(search->getLineEdit(), SIGNAL(returnPressed()), this, SLOT(set_page()));
或者向 Search_browser 添加信號并轉發。
class Search_browser : public QWidget {
signals:
void returnPressed();
};
Search_browser::Search_browser() {
...
connect(lineEdit,SIGNAL(returnPressed()),this,SIGNAL(returnPressed()));
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/496972.html