I don't think it is totally fixed in 4.8.1.
Environment: OSX 10.7.5, Qt 4.8.1, Python 2.7, PyQt 5.1
QPrintDialog seems to behave correctly.
QPageSetupDialog doesn't. If user chooses 'Envelope #10', then afterwards, on the passed QPrinter instance:
- pageSize() (which I suppose is obsolete in Qt 4.8.1 but is still a method of QPrinter and not QPagedPrintDevice) returns dimensions of Letter !
- paperSize(QPrinter.Millimeters) returns 104.7..., 241.3...
- paperSize() returns 30 (the enum for 'Custom')
Summarizing this test result: (In Qt documents, the enum Comm10E is described as 105x241mm) After a user chooses this page size in the Page Setup dialog, Qt reports that the user has chosen an enumerated value of 'Custom' instead of 'Envelope #10' and reports dimensions in mm that are fractionally different from those that are 'described' by Qt.
I plan to test a later version of Qt.
(I would hope that Qt API in this area would be changed (or augmented) to return integer valued dimensions in mm, and to do all its comparisons in ints. It might depend on whether US paper sizes are standardized to integer mm values. According to Wiki, ANSI defines such a standard. But it differs from what Qt 'describes': for example Qt describes Ledger in fractional mm values ('431.8 x 279.4 mm') but ANSI defines it as 279 × 432. I don't think any existing program should be relying on the descriptions, and deprecating returning float valued paper dimensions might help alleviate this problem.)