【发布时间】:2015-12-14 13:10:32
【问题描述】:
我很难理解 qwt 示波器示例。 我大致了解了大部分程序,但我找不到采样线程类和绘图类之间的联系。
图表样本似乎来自采样线程,并提供给绘图类中的 QwtPlotCurve 对象。
但是我找不到采样线程对象和绘图对象之间的联系。但是当我更改采样线程对象中的频率值时,它会应用并出现在绘图对象(画布)上。
以下是部分代码(来自 main.cpp),我不太明白,但请参考完整项目(我认为需要解压缩),下载地址为 http://sourceforge.net/projects/qwt/files/qwt/6.1.2/.
int main( int argc, char **argv )
{
QApplication app( argc, argv );
app.setPalette( Qt::darkGray );
MainWindow window;
window.resize( 800, 400 );
SamplingThread samplingThread;
samplingThread.setFrequency( window.frequency() ); // window.frequency()'s type is double
samplingThread.setAmplitude( window.amplitude() ); // window.amplitude()'s type is double
samplingThread.setInterval( window.signalInterval() ); // window.signalInterval()'s type is double
window.connect( &window, SIGNAL( frequencyChanged( double ) ),
&samplingThread, SLOT( setFrequency( double ) ) );
window.connect( &window, SIGNAL( amplitudeChanged( double ) ),
&samplingThread, SLOT( setAmplitude( double ) ) );
window.connect( &window, SIGNAL( signalIntervalChanged( double ) ),
&samplingThread, SLOT( setInterval( double ) ) );
window.show();
samplingThread.start();
window.start();
bool ok = app.exec();
samplingThread.stop();
samplingThread.wait( 1000 );
return ok;
}
上面的window.start() 等于plot->start()。 而且我找不到绘图对象和采样线程对象之间的联系。 谁能帮我解释一下这部分?
【问题讨论】:
-
那些
window.connect是连接到以后在组件之间传输数据的信号和插槽。如果你不熟悉这个机制,就像设置回调一样。 -
信号来自位于 MainWindows 中的 qwt 小部件,它链接到 samplingThread 的函数。我的问题是情节和采样线程之间的联系。因为当 samplingThread 的成员变量(例如频率)值发生变化时,它会被应用并显示在绘图上。
-
所以你的意思是另一种方式
thread -> UI?这段代码没有显示任何有用的东西。 -
您可以从我发布的链接下载完整的项目。在问题的最后,我写了“window.start() 等于 plot->start()” 如果你再次看到上面的代码,你会发现“samplingThread.start(); window.start();”两个对象调用自己的启动函数,但我找不到对象之间的联系。
标签: qt qwt oscilloscope