本文整理汇总了C++中Observer::detachSubject方法的典型用法代码示例。如果您正苦于以下问题:C++ Observer::detachSubject方法的具体用法?C++ Observer::detachSubject怎么用?C++ Observer::detachSubject使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Observer
的用法示例。
在下文中一共展示了Observer::detachSubject方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: switch
void Qtilities::CoreGui::ObjectScopeWidget::handle_actionDetachToSelection_triggered() {
// Get the ids of all unselected items
QList<int> other_ids;
int selected_id = ui->observerTable->currentItem()->type();
for (int i = 0; i < ui->observerTable->rowCount(); i++) {
if (selected_id != ui->observerTable->item(i,0)->type())
other_ids << ui->observerTable->item(i,0)->type();
}
QStringList unsupported_items;
for (int i = 0; i < other_ids.count(); i++) {
Observer* observer = OBJECT_MANAGER->observerReference(other_ids.at(i));
if (!observer)
break;
if (observer->displayHints()) {
if (!(observer->displayHints()->actionHints() & ObserverHints::ActionRemoveItem)) {
unsupported_items << observer->observerName();
}
} else {
unsupported_items << observer->observerName();
}
}
if (unsupported_items.count() > 0) {
QMessageBox msgBox;
msgBox.setText(tr("All other contexts does not support removing of child items."));
msgBox.setInformativeText(tr("Do you want to continue and remove the contexts which does support this?"));
msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
msgBox.setDefaultButton(QMessageBox::Yes);
int ret = msgBox.exec();
switch (ret) {
case QMessageBox::No:
return;
default:
break;
}
}
for (int i = 0; i < other_ids.count(); i++) {
Observer* observer = OBJECT_MANAGER->observerReference(other_ids.at(i));
if (!observer)
break;
if (observer->displayHints()) {
if (observer->displayHints()->actionHints() & ObserverHints::ActionRemoveItem) {
observer->detachSubject(d->obj);
}
}
}
}
示例2:
void Qtilities::CoreGui::ObjectScopeWidget::handle_actionRemoveContext_triggered() {
// Get the current selected observer
int id = ui->observerTable->currentItem()->type();
Observer* observer = OBJECT_MANAGER->observerReference(id);
if (!observer)
return;
if (observer->displayHints()) {
// Check if a detach operation is supported by this observer.
if (observer->displayHints()->actionHints() & ObserverHints::ActionRemoveItem)
observer->detachSubject(d->obj);
else {
QMessageBox msgBox;
msgBox.setText(tr("The selected context does not support removing of child items. The operation cannot continue."));
msgBox.exec();
}
}
}