كيف يمكنني ضبط حجم Qdialog اعتمادا على طول النص لأحد أطفالها؟
سؤال
انا املك QDialog
أنا أعمل مع. انها مصنوعة إلى حد ما مثل QMessageBox
. وبعد لقد لاحظت أن حجم QMessageBox
(وحجم ملصقه) يعتمد على حجم الرسالة المعروضة.
كيف يمكنني جعل حجم بلدي QDialog
ضبط تلقائيا مثل QMessageBox
ب في الوقت الحاضر بلدي QDialog
يحتوي على مربع زر وتسمية، و QDialog
هو تخطيط عمودي.
(أعرف أنني يمكن أن استخدم مربع الرسالة مباشرة ولكن في النهاية سيكون لدي حوار أكثر تعقيدا.)
المحلول
الحل التلقائي:
استخدام تخطيطات ومعرفة سياسات الحجم ل QSizePolicy::Expanding
. وبعد في Qtdesigner، بمجرد وضع كل أطفالك على Qdialog الخاص بك، ثم انقر فوق ضبط الحجم زر تخطيط القادم. سيتم تغيير حجم Qdialog تلقائيا عند وقت التشغيل.
الحل اليدوي:
ال QWidget
الطبقة لديها طريقة adjustSize
التي تغيير حجم Qwidget لتناسب محتواها. فقط اتصل به عندما يتم تعيين جميع الأطفال.
نصائح أخرى
اضبط مربع الحوار الخاص بك لتوسيعه، صغير جدا. ثم، تأكد من تعيين رسالتك قبل إظهار مربع الحوار. عند إظهارها، سيحاول العثور على حجمها الصحيح، بناء على حجم الكائنات التي يحتوي عليها. (يحدث هذا بشكل متكرر، لذلك إذا لم يكن مربع الحوار الوالد المباشر للتسمية التي تظهر فيها رسالتك، فتأكد من تعيين كل شيء بين التسمية والحوار لاستخدام التخطيطات.)