אפשר אפשר
עבדתי עם QT עד לפני ממש כמה שבועות. אז ככה: 1. בוא נתחיל מזה שאין בונה GUI אוטומטי כמו שצריך. היחיד שמתקרב ללהיות נורמלי הוא QT DESIGNER והם החליטו ללכת על כיוון מאוד מעניין של קובץ מבוסס XML שהוא מייצר לך. אפשר להתווכח על האם זה נכון או לא לעבוד בצורה כזו. בסביבות פיתוח אחרות זה לא עובד כך, הקוד משולב לאן שאתה אומר לו. וגם אם סביבות אחרות שומרות פנימית את ה-XML הזה, אתה בתור תוכניתן לא נחשף אליו אף פעם. כשאתה עובד עם QT DESIGNER אתה לא יכול להימנע מזה, פשוט כך. לעבוד עם KDEVELOP ללא QMAKE זה סיוט מההפטרה. שילוב גם של autotools וגם של ניהול פרויקט שלם וזה לא מבוצע כמו שצריך. כמו שאתה יודע, בכל פעם שאתה משנה form מסוים ב-DESIGNER אתה חייב להעביר אותו קומפילציה ע"י uic. קורה, מתישהו KDEVELOP הורס לך את הקבצים בצורה כזו שהוא לא מריץ את זה יותר. זה פשוט נורא קל, אפילו אם אתה לא עורך שום דבר ידנית. הכל מתוך סביבת העבודה. אין מספיק בשלות. הלאה, אתה יכול לעבוד עם QMAKE דרך KDEV אבל זה גם לא אידאלי. הדרך האמיתית לעבוד בצורה מסודרת עם QT זה לעבוד עם סביבת פיתוח אבל ליצור Makefile בעזרת QMAKE. הבעיה - QMAKE זה כלי ייעודי שנועד לעבוד בצורה מסוימת ונותן פיתרון אחד ויחיד לסביבה אחת. הוא מצוין בלנהל את כל נושא ה-uic וה-moc compiler אבל בזה זה נגמר. אין לו את הגמישות של autotools. כך יוצא שאין לך פיתרון כולל טוב. אם אתה עובד עם QMAKE, זה רק לסביבה מסוימת וצורת בניה מסוימת. אם אתה עובד עם autotools אין לך את הסקריפטים המתאימים כדי לשלב את הפונקציונליות של uic ו-moc. אתה צריך את הסקריפטים האלה אחרת automake לא ידע איך לשלב אותם ב-Makefile. לצורך העניין, החבר'ה של KDEV כתבו כאלה אבל לך תדע איך הם עובדים ומה צריך לעשות כדי להשתמש בהם. 2. עכשיו כשכיסינו את האופציות של הפרויקט, בוא נדבר פרטנית על הספריה. עבודה עם אובייקטים של QT היא לא תמיד נוחה ואינטואיטיבית. לעבוד עם tree זה דבר מעצבן (מניסיון). לעשות עליו מניפולציות זה עוד יותר גרוע. שלא לדבר על זה שהחבר'ה של QT ניסו לגנוב רעיונות מג'אווה (הצליח חלקית) אבל לא עשו את זה נכון. אין בכלל את כל הנושא של tree model ואתה נדרש לרשת מ-node כדי שיהיה לך node שפועל. כאילו שזה לא מספיק, אתה חייב לבצע cast בחזרה בכל פעם שאתה מאחזר node מתוך העץ כי מה לעשות שהעץ מכיר רק את טיפוס הבסיס של ה-node שלו ואתה לפעמים צריך לבצע דברים עם node מסוג חדש. 3. סידור GUI כמו שצריך - לוקח לא מעט זמן להתמקצע בבניית GUI כמו שצריך, גם אם זה דרך QT DESIGNER. צריך לעבוד נכון עם spacerים וקבוצות. לא טריויאלי לגמרי כי אין הסברים ודוגמאות איך לעצב כל מיני דברים מיוחדים. אין הסברים על הנואנסים של הפקדים (אני לא אומר שיש ב-MFC אבל שם הם מתנהגים אינטואיטיבי). 4. לגבי הטענה שלך שאפליקצית QT תדרוש פחות שורות קוד - תביא סימוכין, אל תזרוק באוויר. אני בכלל לא בטוח שאתה צודק. 5. דבר אחרון וחשוב מאוד - החבר'ה שמפתחים את QT באופן קונסיסטנטי למדי משנים דברים בספריה שלהם בצורה קיצונית. לצורך העניין זה גם גורר שינויים די מאסיביים ב-KDE בלינוקס. זה מתחיל להזכיר את מיקרוסופט אבל דבר אחד אפשר להגיד על מיקרוסופט - הם מנסים לשמור על תאימות אחורה ולא לשנות יותר מדי אובייקטים קיימים (לא תמיד הולך להם
). ב-QT המצב אחר - הם לפעמים יכולים לעשות שינויים קיצוניים ולא אכפת להם בכלל. אנחנו מדברים על מצבים שאפליקציות שנכתבו עם גרסאות ישנות של הספריה לא ירוצו דומה בכלל עם גרסא חדשה. פשוט לא לעניין. בקיצור, גם למיקרוסופט וגם ל-trolltech יש הרבה מה ללמוד מסאן בכל מה שקשור ב-DESIGN נכון ותכנון של כלי UI. ג'אווה פשוט שמה את שניהן בכיס הקטן, בלי להתווכח בכלל. ולמרות שסאן משנים את ה-API שלהם מגרסא לגרסא הוא בד"כ עובד עם תאימות אחורה (למרות הערות deprecation) ומתנהג בצורה קונסיסטנטית.