我想調用一個使用Qt信號插槽機制的類的方法。 例如:使用信號插槽的qt類的調用方法
QJsonObject routerInfo;
class LinksysE3000 : public QObject{
Q_OBJECT
public:
LinksysE3000(){
view = new QWebView;
view->load(QUrl("http://admin:[email protected]"));
connect(view, SIGNAL(loadFinished(bool)),this,SLOT(finishedLoading(bool)));
//view->show();
}
~LinksysE3000()
{
view->close();
}
QJsonObject getStatus_RouterDetails(QWebFrame*);
QJsonObject getAll();
public slots:
void finishedLoading(bool ok);
private:
QWebView *view;
};
void LinksysE3000::finishedLoading(bool ok)
{
mainFrame = view->page()->mainFrame();
routerInfo = getStatus_RouterDetails(mainFrame);
}
QJsonObject LinksysE3000::getAll()
{
return routerInfo;
}
#include "main.moc"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
LinksysE3000 LinksysE3000;
// LinksysE3000.getAll();
return app.exec();
}
這是我使用的代碼。在這裏,我加載了一個網頁,並使用信號插槽機制獲取一些數據。
這裏信號loadFinished僅在完成主後生成。我怎樣才能調用getAll()函數?
我想提醒的是主GETALL()功能或其他任何類,它是類實例化LinksysE3000。可能嗎?如果沒有..是否有任何其他機制來加載網頁和提取字段值..?
有人能幫我解決這個問題嗎?
如果我用這個代碼,我得到什麼:
class LinksysE3000 : public QObject{
Q_OBJECT
public:
LinksysE3000(){
view = new QWebView;
view->load(QUrl("http://admin:[email protected]"));
//connect(view, SIGNAL(loadFinished(bool)),this,SLOT(finishedLoading(bool)));
//view->show();
}
~LinksysE3000()
{
view->close();
}
QJsonObject getStatus_RouterDetails(QWebFrame*);
QJsonObject getAll();
QWebView *view;
QWebFrame *mainFrame;
QString clickedPage;
public slots:
void finishedLoading(bool ok);
private:
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
LinksysE3000 linksysE3000;
QThread::sleep(3);
QWebFrame *frame = linksysE3000.view->page()->mainFrame();
qDebug()<<frame->toPlainText(); //This returns nothing
QJsonObject obj = linksysE3000.getStatus_RouterDetails(frame);
qDebug()<<obj; //This shulod return key value pairs, but retuns empty values means page not loaded
return app.exec();
}
呃,'LinksysE3000.getAll();'? – thirtythreeforty
如果您切換評論,會發生什麼情況?你試過了嗎? – skypjack
亞..是否有可能..? –