Seite 1 von 1

Checkbox wird in tabelle unter MacosX falsch dargestellt

Verfasst: Freitag 17. März 2017, 08:42
von nieselfriem
Hallo,

ich habe folgendes Problem.

Ich habe in einem Tabellenmodell mir für die Darstellung von Booleanwerte eine Checkbox als delegate eingerichtet.

[codebox=python file=Unbenannt.txt]
# coding=utf-8

from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *


class CheckBoxDelegate(QItemDelegate):
def __init__(self, parent=None):
QItemDelegate.__init__(self, parent)
self.chkboxSize = 19 # ?!

def createEditor(self, parent, option, index):
chkbox = QCheckBox(parent)
chkbox.setText('')
chkbox.setTristate(False)
left = option.rect.x() + (option.rect.width() - self.chkboxSize) / 2
top = option.rect.y() + (option.rect.height() - self.chkboxSize) / 2
chkbox.setGeometry(left, top, self.chkboxSize, self.chkboxSize)
return chkbox

def paint(self, painter, option, index):
value = index.data()
opt = QStyleOptionButton()
opt.state |= QStyle.State_Enabled | (QStyle.State_On if value else QStyle.State_Off)
opt.text = ''
left = option.rect.x() + (option.rect.width() - self.chkboxSize) / 2
top = option.rect.y() + (option.rect.height() - self.chkboxSize) / 2
opt.rect = QRect(left, top, self.chkboxSize, self.chkboxSize)
QApplication.style().drawControl(QStyle.CE_CheckBox, opt, painter)

def updateEditorGeometry(self, editor, option, index):
pass
[/code]

diese habe ich dann wie folgt eingebunden

Code: Alles auswählen

self.dataTBL.setItemDelegateForColumn(2, CheckBoxDelegate(self.dataTBL))
Das funktioniert auch auf Windows und unter Linux so weit ganz gut. Nur unter MacOSX gibt es Darstellungsfehler. Die Checkbox wird nicht mehr in der Spalte 3 dargestellt sondern überdeckt das Datum der 1. Spalte. (siehe Screenshots) Was kann ich machen, dass es solche Darstellungsfehler vermeiden kann und wie behebe ich diesen?


Linux: https://www.dropbox.com/s/c1ci3l89fp4v4 ... p.png?dl=0
MacOs: https://www.dropbox.com/s/z9vm6qybnajx4 ... 1.png?dl=0
Windows: https://www.dropbox.com/s/ptfvfwo73oo21 ... 4.png?dl=0

VG niesel

Re: Checkbox wird in tabelle unter MacosX falsch dargestellt

Verfasst: Freitag 17. März 2017, 23:35
von jerch
@nieselfriem:
Schau mal, ob das Problem verschwindet, wenn Du explizit den Fusion-Style benutzt. In Qt 5.4 bis 5.6 war das ein bekannter Bug.

Re: Checkbox wird in tabelle unter MacosX falsch dargestellt

Verfasst: Samstag 18. März 2017, 14:33
von nieselfriem
Hi,

sagen wir es mal so. Die Checbox wird jetzt richtig dargestellt. Wenn man jedoch den Wert verändern will, dann kommt es zu diesem interessanten Fehler, dass man ein Dropdownmenü mit true und False präsentiert bekommt. :?

Die Frage, ist nun, wie kann man das QT auf einem Mac Updaten. Das ist ja schon so weit ich weiß vorinstalliert. Da dies nicht mein mac ist, sondern der meiner Freundin, kann ich nicht so wild schalten und walten wie ich will ;)

https://www.dropbox.com/s/nw2iwg844c5mz ... 5.png?dl=0


VG niesel

Re: Checkbox wird in tabelle unter MacosX falsch dargestellt

Verfasst: Samstag 18. März 2017, 17:21
von __deets__
Das waere dann der erste Mac der mir unterkommt, auf dem das vorinstalliert ist. Das wird entweder explizit per Installer installiert, oder ueber so etwas wie homebrew etc. als Paket. Wie das auf dem Mac deiner Freundin aussieht ist fuer mich aus naheliegenden Gruenden nicht ersichtlich ;)

Re: Checkbox wird in tabelle unter MacosX falsch dargestellt

Verfasst: Samstag 18. März 2017, 19:41
von nieselfriem
Laut Systeminformation ist folgendes installiert:

QTKit:

Version: 7.7.3
Erhalten von: Apple
Zuletzt geändert: 18.10.15, 03:26
Art: Intel
64-Bit (Intel): Ja
Signiert von: Software Signing, Apple Code Signing Certification Authority, Apple Root CA
Informationen: QTKit 7.7.3, Copyright 2003-2012, Apple Inc.
Ort: /System/Library/Frameworks/QTKit.framework
Privat: Nein


vg niesel

Re: Checkbox wird in tabelle unter MacosX falsch dargestellt

Verfasst: Samstag 18. März 2017, 22:04
von BlackJack
@nieselfriem: Das ist Apple's QuickTime. Hat nichts mit Qt zu tun. :-)

Re: Checkbox wird in tabelle unter MacosX falsch dargestellt

Verfasst: Montag 20. März 2017, 11:59
von nieselfriem
Ok, ich dachte nur, dass Apple das Framework anders benennt. Ich hatte das nach dieser Anleitung herausgesucht.

http://stackoverflow.com/questions/7912 ... n-mac-os-x

Ber davon mal abgesehen, habe ich auf diesem Mac nur PyQT mit pip3 installiert. Das komplette Framework als DMG File habe ich da nicht herunterlgeladen. Weiß denn jemand, wie ich beim MC dann die Version des Framework ermittel?

VG niesel

Re: Checkbox wird in tabelle unter MacosX falsch dargestellt

Verfasst: Montag 20. März 2017, 12:36
von __deets__
Wenn das Programm laueft, kannst du dir im Activity Monitor anschauen, welche Bibliotheken alle geladen sind. Dazu auf "Info" klicken, und die geoeffneten Dateien anzeigen.

Sieht bei meinem flymake-Python vom Emacs gestartet zb so aus:

Code: Alles auswählen

cwd
/Volumes/untitled/cross-env/scripts
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/Python
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_locale.so
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/readline.so
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_collections.so
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/operator.so
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/itertools.so
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_heapq.so
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/grp.so
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/time.so
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/select.so
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/fcntl.so
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_struct.so
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/binascii.so
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/cStringIO.so
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/strop.so
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/zlib.so
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_functools.so
txt
/usr/lib/dyld
txt
/private/var/db/dyld/dyld_shared_cache_x86_64
0
/dev/ttys005
1
/dev/ttys005
2
/dev/ttys005
5
/Users/dir/Library/Saved Application State/org.gnu.Emacs.savedState/data.data
6
/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Resources/Extras2.rsrc
7
/System/Library/Frameworks/CoreImage.framework/ci_kernels.metallib
8
/private/var/folders/s_/0j3hmy3x2l799l9z2zglgn3r0000gr/C/org.gnu.Emacs/com.apple.metal/libraries.maps
9
/private/var/folders/s_/0j3hmy3x2l799l9z2zglgn3r0000gr/C/org.gnu.Emacs/com.apple.metal/libraries.data
10
/private/var/folders/s_/0j3hmy3x2l799l9z2zglgn3r0000gr/C/org.gnu.Emacs/com.apple.metal/AMD Radeon HD - FirePro D500/functions.maps
11
/private/var/folders/s_/0j3hmy3x2l799l9z2zglgn3r0000gr/C/org.gnu.Emacs/com.apple.metal/AMD Radeon HD - FirePro D500/functions.data
12
/Users/dir/Library/Saved Application State/org.gnu.Emacs.savedState/windows.plist
13
/Users/dir/Library/Saved Application State/org.gnu.Emacs.savedState/window_1.data
15
/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Resources/HIToolbox.rsrc
16
/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Resources/English.lproj/Localized.rsrc