本文整理汇总了C++中WaveformWidgetAbstract::getWidget方法的典型用法代码示例。如果您正苦于以下问题:C++ WaveformWidgetAbstract::getWidget方法的具体用法?C++ WaveformWidgetAbstract::getWidget怎么用?C++ WaveformWidgetAbstract::getWidget使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WaveformWidgetAbstract
的用法示例。
在下文中一共展示了WaveformWidgetAbstract::getWidget方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: swap
void WaveformWidgetFactory::swap() {
ScopedTimer t(QString("WaveformWidgetFactory::swap() %1waveforms")
.arg(m_waveformWidgetHolders.size()));
// Do this in an extra slot to be sure to hit the desired interval
if (!m_skipRender) {
if (m_type) { // no regular updates for an empty waveform
// Show rendered buffer from last render() run
//qDebug() << "swap() start" << m_vsyncThread->elapsed();
for (int i = 0; i < m_waveformWidgetHolders.size(); i++) {
WaveformWidgetAbstract* pWaveformWidget = m_waveformWidgetHolders[i].m_waveformWidget;
if (pWaveformWidget->getWidth() > 0) {
QGLWidget* glw = dynamic_cast<QGLWidget*>(pWaveformWidget->getWidget());
if (glw) {
m_vsyncThread->swapGl(glw, i);
}
}
//qDebug() << "swap x" << m_vsyncThread->elapsed();
}
}
}
//qDebug() << "swap end" << m_vsyncThread->elapsed();
m_vsyncThread->vsyncSlotFinished();
}
示例2: swap
void WaveformWidgetFactory::swap() {
ScopedTimer t("WaveformWidgetFactory::swap() %1waveforms", m_waveformWidgetHolders.size());
// Do this in an extra slot to be sure to hit the desired interval
if (!m_skipRender) {
if (m_type) { // no regular updates for an empty waveform
// Show rendered buffer from last render() run
//qDebug() << "swap() start" << m_vsyncThread->elapsed();
for (int i = 0; i < m_waveformWidgetHolders.size(); i++) {
WaveformWidgetAbstract* pWaveformWidget = m_waveformWidgetHolders[i].m_waveformWidget;
if (pWaveformWidget->getWidth() > 0) {
QGLWidget* glw = dynamic_cast<QGLWidget*>(pWaveformWidget->getWidget());
// Don't swap invalid or invisible widgets. Prevents
// continuous log spew of "QOpenGLContext::swapBuffers()
// called with non-exposed window, behavior is undefined" on
// Qt5.
if (glw && glw->isValid() && glw->isVisible()) {
VSyncThread::swapGl(glw, i);
}
}
//qDebug() << "swap x" << m_vsyncThread->elapsed();
}
}
}
//qDebug() << "swap end" << m_vsyncThread->elapsed();
m_vsyncThread->vsyncSlotFinished();
}
示例3: setWidgetTypeFromHandle
bool WaveformWidgetFactory::setWidgetTypeFromHandle(int handleIndex) {
if (handleIndex < 0 && handleIndex > (int)m_waveformWidgetHandles.size()) {
qDebug() << "WaveformWidgetFactory::setWidgetType - invalid handle --> use of 'EmptyWaveform'";
// fallback empty type
setWidgetType(WaveformWidgetType::EmptyWaveform);
return false;
}
WaveformWidgetAbstractHandle& handle = m_waveformWidgetHandles[handleIndex];
if (handle.m_type == m_type) {
qDebug() << "WaveformWidgetFactory::setWidgetType - type already in use";
return true;
}
// change the type
setWidgetType(handle.m_type);
m_skipRender = true;
//qDebug() << "recreate start";
//re-create/setup all waveform widgets
for (int i = 0; i < m_waveformWidgetHolders.size(); i++) {
WaveformWidgetHolder& holder = m_waveformWidgetHolders[i];
WaveformWidgetAbstract* previousWidget = holder.m_waveformWidget;
TrackPointer pTrack = previousWidget->getTrackInfo();
//previousWidget->hold();
int previousZoom = previousWidget->getZoomFactor();
delete previousWidget;
WWaveformViewer* viewer = holder.m_waveformViewer;
WaveformWidgetAbstract* widget = createWaveformWidget(m_type, holder.m_waveformViewer);
holder.m_waveformWidget = widget;
viewer->setWaveformWidget(widget);
viewer->setup(holder.m_skinNodeCache, holder.m_skinContextCache);
viewer->setZoom(previousZoom);
// resize() doesn't seem to get called on the widget. I think Qt skips
// it since the size didn't change.
//viewer->resize(viewer->size());
widget->resize(viewer->width(), viewer->height());
widget->setTrack(pTrack);
widget->getWidget()->show();
viewer->update();
}
m_skipRender = false;
//qDebug() << "recreate done";
return true;
}
示例4: render
void WaveformWidgetFactory::render() {
ScopedTimer t(QString("WaveformWidgetFactory::render() %1waveforms")
.arg(m_waveformWidgetHolders.size()));
//int paintersSetupTime0 = 0;
//int paintersSetupTime1 = 0;
if (!m_skipRender) {
if (m_type) { // no regular updates for an empty waveform
// next rendered frame is displayed after next buffer swap and than after VSync
for (int i = 0; i < m_waveformWidgetHolders.size(); i++) {
// Calculate play position for the new Frame in following run
m_waveformWidgetHolders[i].m_waveformWidget->preRender(m_vsyncThread);
}
//qDebug() << "prerender" << m_vsyncThread->elapsed();
// It may happen that there is an artificially delayed due to
// anti tearing driver settings
// all render commands are delayed until the swap from the previous run is executed
for (int i = 0; i < m_waveformWidgetHolders.size(); i++) {
WaveformWidgetAbstract* pWaveformWidget = m_waveformWidgetHolders[i].m_waveformWidget;
if (pWaveformWidget->getWidth() > 0 &&
pWaveformWidget->getWidget()->isVisible()) {
(void)pWaveformWidget->render();
}
// qDebug() << "render" << i << m_vsyncThread->elapsed();
}
}
// Notify all other waveform-like widgets (e.g. WSpinny's) that they should
// update.
//int t1 = m_vsyncThread->elapsed();
emit(waveformUpdateTick());
//qDebug() << "emit" << m_vsyncThread->elapsed() - t1;
m_frameCnt += 1.0;
int timeCnt = m_time.elapsed();
if (timeCnt > 1000) {
m_time.start();
m_frameCnt = m_frameCnt * 1000 / timeCnt; // latency correction
emit(waveformMeasured(m_frameCnt, m_vsyncThread->rtErrorCnt()));
m_frameCnt = 0.0;
}
}
//qDebug() << "refresh end" << m_vsyncThread->elapsed();
m_vsyncThread->vsyncSlotFinished();
}