{"id":436,"date":"2014-07-21T00:41:19","date_gmt":"2014-07-20T22:41:19","guid":{"rendered":"http:\/\/www.instruyete.org\/?p=436"},"modified":"2014-07-21T00:41:19","modified_gmt":"2014-07-20T22:41:19","slug":"qt-delegates-und-qdialog","status":"publish","type":"post","link":"https:\/\/www.instruyete.org\/?p=436","title":{"rendered":"Qt Delegate&#8217;s und QDialog"},"content":{"rendered":"<p>Dieser Artikel beschreibt ein Problem beim Aufruf eines QDialog&#8217;s durch den Delegate Mechanismus von Qt 4.<br \/>\nBeim Schliessen eines QDialog&#8217;s durch einen Accept oder Reject Button wird ab<br \/>\nqdialog.cpp:577f.<\/p>\n<p><code>hide();<br \/>\nsetResult(r);<\/code><\/p>\n<p>ausgef\u00fchrt. Das Problem ist hier die Reihenfolge &#8211; denn<br \/>\n<code>QItemDelegate::eventFilter<\/code><br \/>\nprozessiert das <strong>hideEvent()<\/strong> und leitet via <strong>commitData()<\/strong><br \/>\nauf qabstractview.cpp:2765<\/p>\n<p><code>delegate->setModelData()<\/code><\/p>\n<p>\u00fcber, der in einem Nachlauf des eigenen Codes den Result-Wert des Dialogs kennen mu\u00df, um Werte des Dialogs entweder zu \u00fcbernehmen oder zu verwerfen.<\/p>\n<p>Ein schneller und valider Workaround ist das Schliessen des Dialogs abzufangen und <strong>setResult()<\/strong> als erstes zu setzen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dieser Artikel beschreibt ein Problem beim Aufruf eines QDialog&#8217;s durch den Delegate Mechanismus von Qt 4. Beim Schliessen eines QDialog&#8217;s durch einen Accept oder Reject Button wird ab qdialog.cpp:577f. hide(); setResult(r); ausgef\u00fchrt. Das Problem ist hier die Reihenfolge &#8211; denn QItemDelegate::eventFilter prozessiert das hideEvent() und leitet via commitData() auf qabstractview.cpp:2765 delegate->setModelData() \u00fcber, der in einem &hellip; <a href=\"https:\/\/www.instruyete.org\/?p=436\" class=\"more-link\"><span class=\"screen-reader-text\">Qt Delegate&#8217;s und QDialog<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"class_list":["post-436","post","type-post","status-publish","format-standard","hentry","category-unix"],"_links":{"self":[{"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/posts\/436","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=436"}],"version-history":[{"count":0,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/posts\/436\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.instruyete.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=436"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=436"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=436"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}