I'm trying to save the custom colors of QColorDialog using QSettings. On Windows this is working correctly, but on Mac I'm having some problems:

1. QColorDialog.customColor() returns a long instead of an int
2. When I save that long using QSettings, it comes back as an int with a value of -1

This seems like a bug in Qt or PyQt to me. Am I missing something?


Related to this, when you pass a negative int to QColorDialog.setCustomColor(), it throws this rather baffling exception: TypeError: QColorDialog.setCustomColor(int, int): argument 2 has unexpected type 'int'

It seems like ValueError would be more appropriate. At the very least, a more accurate error message would have saved me about 20 minutes of scratching my head. :)


Here's my complete code. I'm using the v2 QVariant API, but I get similar results with the v1 API.

import sip
sip.setapi('QVariant', 2)
from PyQt4.QtCore import *
from PyQt4.QtGui import *

settings = QSettings()
settings.beginGroup('colordialog')
c = QColorDialog.customColor(0)
print 'Original color:', c, type(c)
settings.setValue('color', c)
settings.endGroup()


settings = QSettings()
settings.beginGroup('colordialog')
c = settings.value('color')
print 'Restored color:', c, type(c)
QColorDialog.setCustomColor(0, settings.value('color'))
settings.endGroup()

_______________________________________________
PyQt mailing list    [email protected]
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to