1
有人請指教如何正確實施SLOT執行?QT中的SIGNAL和SLOT參數問題
我的代碼:
prog::prog(QWidget *parent): QMainWindow(parent) //constructor (VisualStudio):
{
ui.setupUi(this);
QCustomPlot * customPlot = new QCustomPlot(this);
setupRealtimeDataDemo(customPlot);
// + more code
}
void prog::setupRealtimeDataDemo(QCustomPlot * customPlot)
{
customPlot->addGraph(); //
// + more related with graph methods
// setup a timer that repeatedly calls realtimeDataSlot:
connect(&dataTimer, SIGNAL(timeout()), this, SLOT(realtimeDataSlot(QCustomPlot)));
dataTimer.start(0); // Interval 0 means to refresh as fast as possible
}
void prog::realtimeDataSlot(QCustomPlot *customPlot)
{
// calculate two new data points:
#if QT_VERSION < QT_VERSION_CHECK(4, 7, 0)
double key = 0;
#else
double key = QDateTime::currentDateTime().toMSecsSinceEpoch()/1000.0;
#endif
static double lastPointKey = 0;
if (key-lastPointKey > 0.01) // at most add point every 10 ms
{
double value0 = qSin(key); //sin(key*1.6+cos(key*1.7)*2)*10 + sin(key*1.2+0.56)*20 + 26;
double value1 = qCos(key); //sin(key*1.3+cos(key*1.2)*1.2)*7 + sin(key*0.9+0.26)*24 + 26
// add data to lines:
customPlot->graph(0)->addData(key, value0);
customPlot->graph(1)->addData(key, value1);
// + more code related with graph
}
}
這裏是我的發現:
SIGNAL和SLOT需要相同的簽名,建設程序將無法運行 插槽(這是因爲縫隙變得不確定)。
可能的解決方案:刪除QCustomPlot參數表單SLOT,但如何將 發送給realtimeDataSlot指向QCustomPlot的指針?也許 有可能超載超時()?也許其他的解決方案
我發現,當我使用的#include「winsock2.h」,並嘗試以「推動到...」選項 像 出現有關參數的重新定義http://www.qcustomplot.com/index.php/tutorials/settingup錯誤,所以這種解決方法我不能 使用。我也不會不會使用qwt
感謝您的幫助!
大, 有用!我還有一個額外的問題,在上面的代碼中double value0和double value1顯示在plot上。在程序中我有實時收集double值的函數(值首先是smatch匹配中的字符串(regex),然後我想讓它們成爲double值。收集數據的函數是void prog :: collect_data(u_char * data2 ,int Size)。請問如何將這個函數與已經運行的realtimeDataSlot連接起來? –