本文整理汇总了C++中TimerInfoPtr::timerObject方法的典型用法代码示例。如果您正苦于以下问题:C++ TimerInfoPtr::timerObject方法的具体用法?C++ TimerInfoPtr::timerObject怎么用?C++ TimerInfoPtr::timerObject使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TimerInfoPtr
的用法示例。
在下文中一共展示了TimerInfoPtr::timerObject方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: data
QVariant TimerModel::data(const QModelIndex &index, int role) const
{
if (!m_sourceModel || !index.isValid())
return QVariant();
if (role == Qt::DisplayRole) {
const TimerInfoPtr timerInfo = const_cast<TimerModel *>(this)->findOrCreateTimerInfo(index);
switch (index.column()) {
case ObjectNameColumn:
return timerInfo->displayName();
case StateColumn:
return timerInfo->state();
case TotalWakeupsColumn:
return timerInfo->totalWakeups();
case WakeupsPerSecColumn:
return timerInfo->wakeupsPerSec();
case TimePerWakeupColumn:
return timerInfo->timePerWakeup();
case MaxTimePerWakeupColumn:
return timerInfo->maxWakeupTime();
case TimerIdColumn:
return timerInfo->timerId();
case ColumnCount:
break;
}
}
if (role == ObjectIdRole && index.column() == 0) {
const TimerInfoPtr timerInfo = const_cast<TimerModel*>(this)->findOrCreateTimerInfo(index);
return QVariant::fromValue(ObjectId(timerInfo->timerObject()));
}
return QVariant();
}
示例2: rowFor
int TimerModel::rowFor(QObject *timer)
{
for (int i = 0; i < rowCount(); i++) {
const TimerInfoPtr timerInfo = findOrCreateTimerInfo(index(i, 0));
if (timerInfo && timerInfo->timerObject() == timer)
return i;
}
return -1;
}
示例3: postSignalActivate
void TimerModel::postSignalActivate(QObject *caller, int methodIndex)
{
QHash<QObject*, TimerInfoPtr>::iterator it = m_currentSignals.find(caller);
if (it == m_currentSignals.end()) {
// Ok, likely a GammaRay timer
// cout << "TimerModel::postSignalActivate(): Unable to find timer "
// << (void*)caller << " (" << caller->objectName().toStdString() << ")!" << endl;
return;
}
const TimerInfoPtr timerInfo = *it;
Q_ASSERT(timerInfo);
if (!(timerInfo->type() == TimerInfo::QTimerType && methodIndex == m_timeoutIndex) &&
!(timerInfo->type() == TimerInfo::QQmlTimerType && methodIndex == m_qmlTimerTriggeredIndex))
{
return;
}
m_currentSignals.erase(it);
if (!timerInfo->timerObject()) {
// timer got killed in a slot
return;
}
Q_ASSERT(caller == timerInfo->timerObject());
if (!timerInfo->functionCallTimer()->active()) {
cout << "TimerModel::postSignalActivate(): Timer not active: "
<< (void*)caller << " (" << caller->objectName().toStdString() << ")!" << endl;
return;
}
TimerInfo::TimeoutEvent event;
event.timeStamp = QTime::currentTime();
event.executionTime = timerInfo->functionCallTimer()->stop();
timerInfo->addEvent(event);
const int row = rowFor(timerInfo->timerObject());
emitTimerObjectChanged(row);
}
示例4: findOrCreateQTimerTimerInfo
TimerInfoPtr TimerModel::findOrCreateQTimerTimerInfo(QObject *timer)
{
if (!timer)
return TimerInfoPtr();
QVariant timerInfoVariant = timer->property(timerInfoPropertyName);
if (!timerInfoVariant.isValid()) {
const TimerInfoPtr info = TimerInfoPtr(new TimerInfo(timer));
if (m_qmlTimerTriggeredIndex < 0 && info->type() == TimerInfo::QQmlTimerType)
m_qmlTimerTriggeredIndex = timer->metaObject()->indexOfMethod("triggered()");
timerInfoVariant.setValue(info);
if (timer->thread() == QThread::currentThread()) // ### FIXME: we shouldn't use setProperty() in the first place...
timer->setProperty(timerInfoPropertyName, timerInfoVariant);
}
const TimerInfoPtr timerInfo = timerInfoVariant.value<TimerInfoPtr>();
Q_ASSERT(timerInfo->timerObject() == timer);
return timerInfo;
}