Qt (ערכת כלים)

רישוי

עבור גרסאות הקודמות לגרסה 4.5, Qt זמינה תחת רישיון כפול, GPL גרסה 2 או גרסה 3, עם חריגים מיוחדים, ותמיכה ברישיון מסחרי בכל הפלטפורמות הנתמכות. הרישיון המסחרי מאפשר לתוכנות שנוצרות בעזרת Qt להיות תחת רישיונות קוד פתוח או תוכנה חופשית, כגון LGPL או רישיון אומנותי (Artistic License) או רישיון תוכנה קנייני. עד גרסה 1.45, Qt הופצה תחת רישיון FreeQt, שלא נחשב כרישיון חופשי העונה להגדרות רישיונות חופשיים של קרן התוכנה החופשית. עם שחרור גרסה 2.0 של הערכה, הרישיון שונה להיות Q Public License (שנקרא QPL), רישיון תוכנה חופשי, אך עדיין לא מותאם לרישיון GPL של קרן התוכנה החופשית. חברת Trolltech ו-KDE הגיעו לפשרות שבהן נאמר כי Qt לא תופץ ברישיון מגביל יותר מ-QPL, אפילו אם Trolltech תירכש על ידי חברה אחרת או תפשוט רגל.
ב-3 במרץ 2009, נוקיה הפיצה את גרסה 4.5 של Qt גם תחת רישיוןLGPL.
כל הגרסאות תומכות במגוון רחב של מהדרים, בין היתר במהדר GCC של ++C, ותמיכה ב-Visual Studio של מיקרוסופט.
בנוסף, קיימים תוספים עבור Visual Studio ו-Eclipse, כמו גם עורך קוד ייעודי - QtCreator.

היסטוריה

האוורד נורד ואיריק צ'מב-אנג (המפתחים המקוריים של Qt, והמנכ"ל והנשיא בהתאמה של Trolltech), התחילו לפתח את Qt בשנת 1991, שלוש שנים לפני שהחברה התאחדה עם קוואזר-טכנולוגיות, שינתה את שמה ל-Troll Tech, ולבסוף ל-Trolltech.
ערכת הכלים נקראה Qt כיוון שהאות Q נראתה נעימה לעין בפורט שבו האוורד השתמש בתוכנת ה-Emacs (תוכנה לעריכת טקסט בלינוקס/יוניקס), והאות t נלקחה מ-Xt, ערכת כלים מבוססת מערכת חלונות X (מערכת הפעלה לינוקסית).
בשנת 1998 נוצרה מחלוקת, כשהתברר ש-KDE הולכת להיות אחת מסביבות שולחנות העבודה המובילות ללינוקס. כיוון ש-KDE התבססה על Qt, רבים מתנועת התוכנה החופשית חששו שחלק עיקרי ממערכת ההפעלה החופשית העיקרית יהיה קנייני.
דבר זה הוביל לשני כיוונים: ערכת הכלים "הרמוניה", שחרתה על דגלה לשכפל את ערכת Qt לחלוטין תחת רישיון תוכנה חופשית, ושולחן העבודה GNOME, אשר שאף לדחוק את KDE לגמרי. שולחן העבודה GNOME התבסס כולו על ערכת GTK+, אשר נכתבה במקור עבור GIMP (תוכנת קוד פתוח לעריכת תמונות), ומבוססת על קוד בשפת C.
שתי הגרסאות הראשונות של Qt כללו תמיכה בשתי מערכות הפעלה: Qt/X11 עבור יוניקס ו-Qt/Windows עבור חלונות. הגרסה לחלונות הייתה זמינה רק תחת רישיון קנייני, דבר שגרם לכך שלא היה ניתן להעביר לחלונות תוכנות חופשיות או בעלות קוד פתוח אשר נכתבו ב-Qt עבור X11, מבלי לרכוש גרסת QPL (רישיון קנייני של Qt). בסוף שנת 2001, Trolltech הוציאה את Qt 3.0 אשר הוסיפה תמיכה למערכת ההפעלה Mac OS X. גם גרסה זו הייתה מבוססת רישיון קנייני בלבד, עד יוני 2003, אז הוציאה טרולטק את Qt 3.2, עם תמיכה במערכת ההפעלה Mac OS X תחת רישיון GPL.
בשנת 2002, חברים בפרויקט KDE החלו להמיר את הקוד של Qt/X11 המבוסס GPL לחלונות. דבר זה נעשה בעקבות סירובה של טרולטק להפיץ גרסת Qt תחת רישיון GPL בטענה כי חלונות אינה תוכנה חופשית או בעלת קוד פתוח. אף על פי שפרויקט זה לא הגיע לאיכות של המקור, הוא השיג הצלחה משמעותית.
בעיות הרישיון נפתרו ביוני 2005, כאשר טרולטק הוציאה את Qt/Windows 4 תחת רישיון GPL. Qt גרסה 4 תומכת באותו סט של מערכות הפעלה במהדורה החופשית או בעלת הקוד הפתוח, כמו במהדורה הקניינית. דבר זה מאפשר ליצור תוכנות חופשיות או מבוססות קוד פתוח תחת רישיון GPL בעזרת Qt, בכל מערכות ההפעלה הנתמכות.
ביוני 2008 נוקיה רכשה את טרולטק על מנת להאיץ את אסטרטגיית פיתוח תוכנות חוצות-פלטפורמות, וכדי לפתח שירותי אינטרנט עסקיים. בספטמבר אותה שנה, נוקיה שינתה את שמה של טרולטק ל-Qt software.
באוגוסט 2012 רכשה דיגיה הפינית, חברה שקודם לכן רכשה מנוקיה את הזכויות המסחריות על Qt, את הבעלות המלאה על Qt, והפכה לאחראית בלעדית על המשך פיתוח והפצת הספרייה. דיגיה הרחיבה את התמיכה ב-Qt גם לפלטפורמות נוספות, כגון אנדרואיד ו-IOS 7.
בספטמבר 2014 הסבה דיגיה את צוות הפיתוח של Qt לחברת בת עצמאית בשם The Qt Company. במאי 2016 נפרדו החברות זו מזו לשתי חברות בלתי תלויות, כאשר The Qt Company הונפקה בנסד"ק הלסינקי.

סניפים

לחברת טרולטק יש סניפים ברחבי העולם, בסין, בגרמניה בארצות הברית באוסטרליה, והחל משנת 2008, גם בישראל. בארץ החברה מיוצגת על ידי "טאקט פתרונות תוכנה".

שימוש בפקודות ממשק משתמש טבעי תלוי מערכת הפעלה

גרסאות ראשונות של Qt השתמשו במראה ממשק משתמש שנוצר על ידי Qt עצמו, ובא לדמות את המראה של הפלטפורמה המתאימה; דבר זה גרם לעיתים לאי-התאמה במראה המערכת. הגרסאות האחרונות של Qt משתמשות בפקודות (API) טבעיות של מערכת ההפעלה על מנת ליצור את הכפתורים שלQt.

מהדר מטא-אובייקטים

מהדר מטא-אובייקטים (Meta Object Compiler – Moc) הוא כלי שרץ על תוכניות שכתובות ב-Qt לפני ההידור שלהן. המהדר הזה יוצר קוד ++C עם מטא-מידע על האובייקטים של התוכנית. Qt משתמש במטא-מידע זה על מנת ליצור אפשרויות שלא טבעיות בשפת ++C, לדוגמה: מערכת האותות/חריצים, קריאות א-סינכרוניות לפונקציות וכולי.

מחלוקת

קיימת ביקורת על השימוש בכלי זה כדי להפוך את התכנות ב-Qt לשונה מתכנות טבעי ב-++C. הועברה ביקורת במיוחד על מימוש המשתמש במאקרו (Macro) עקב חוסר בבטיחות סוגי משתנים, וזיהום של namespace. חברת טרולטק מחשיבה זאת כהכרח על מנת לאפשר את מנגנון האותות וחריצים הנוצרים באופן דינמי.

מפענח סקריפטים

Qt Script היא ערכת כלים חוצת-פלטפורמות שהמאפשרת למפתחים להפוך את תוכנות ה-Qt שלהם, מבוססות ++C, לניתנות לשינוי בעזרת סקריפטים, בעזרת שפת סקריפטים ניתנת-לפירוש, בדומה ל-JavaScript.
החל מגרסה 4.3.0 של Qt, אוסף פקודות הסקריפטים הן חלק מליבת Qt ולא באים בתור ספרייה נפרדת.

קוד תוכנית "Hello World" ב-Qt

ב-Qt, תוכנית לכתיבת Hello World נכתבת כך:
#include <QApplication>#include <QLabel>int main(int argc, char *argv[]){
    QApplication app(argc, argv);
    QLabel label("Hello, world!");
    label.show();
    return app.exec();}

Qt Examples and Demos

Qt Examples and Demos היא תוכנה המאפשרת הצגה של אוסף התוכנות לדוגמה וה-demos, המדגימים עקרונות תכנות נכון בסביבת Qt. כל אחת מהתוכנות ניתן להרצה, וניתן להסתכל על קוד המקור שלה, שנבנה תוך הקפדה על הדגשת העקרונות. הדוגמאות מחולקות לקטגוריות, ביניהן: תכנות ממוקבל, עבודה עם desktop, שימוש ב-widgets שונים, עבודה עם התוכנות השונות המצורפות, SQL, XML, עבודה עם threads ועוד.

QtAssistant

QtAssistant היא תוכנה להצגת מסמכים מקוונים, תוך דגש על מסמכי עזרה. תוכנה זו עובדת באופן דומה לדפדפן (בעלת חלון תצוגה ראשי, חיפוש, ותמיכה בהיפר-קישורים, החל מגרסה 4.4 היא מבוססת על WebKit), וניתן לבצע bookmark לעמודים חשובים. בנוסף לדפדפנים רגילים, התוכנה מאפשרת ניווט יעיל ומשופר בעזרת מנוע חיפוש מתקדם, שמאנדקס את כל העמודים בקובץ העזרה הדחוס, כך שניתן לחפש מילים וביטויים ספציפיים בקובץ. בנוסף, התוכנה מציעה חיפוש מילים מלא.

QtDesigner

QtDesigner היא תוכנה לעיצוב ובניית ממשקי משתמש גרפיים בעזרת רכיבי Qt. ניתן לעצב באופן אישי את ה-widgets בצורת WYSIWYG ‏(What You See Is What You Get), ולבדוק אותם בעזרת עיצובים שונים. התוכנה תומכת במנגנון האותות והחריצים, וניתן לקשר רכיבים בצורה זו באופן גרפי (על ידי חיבור רכיב השולח אות לרכיב המקבל אות). כמו כן, ניתן להשתמש ברכיבים שנוצרו על ידי המתכנת. הרכיבים שנוצרו בעזרת QtDesigner מתמזגים עם הקוד שהמתכנת כותב, וניתן לגשת ולשנות ערכים שנקבעו ב-QtDesigner באמצעות קוד באופן דינמי.

QtLinguist

QtLinguist היא תוכנה המאפשרת תרגום של שדות טקסט משפת המקור לשפות שונות. התוכנה ממפה את המחרוזות שהמתכנתים מסמנים לתרגום (בעזרת פונקציה מיוחדת), ומאפשרת לתרגם את ערכים אלה לשפות שונות, בהתאם להקשרים שבהם הם נמצאים. התוכנה יכולה להבדיל בין אפשרויות שפה שונות (שייכות, יחיד-רבים וכו') בעזרת סימון שהמתכנתים שמים, ותומכת בהכנסה במשתנים בצורה תלויית-שפה. QtLinguist מייצרת קובץ המאגד את התרגומים השונים בצורה דחוסה ומהירה, ומאפשר את צירופם לתוכנה.

QtCreator

QtCreator היא סביבת פיתוח משולבת (IDE) הרצה על מספר פלטפורמות ומותאמת במיוחד למתכנתי Qt. תכונות העורך מתמקדות בתמיכה במשתמשים חדשים, כמו גם בהגברת היעילות של משתמשים ותיקים. בין התכונות האלה קיימות: עורך קוד מתקדם בסביבת C++, QtDesigner מובנה, כלי ניהול פרויקטים, מערכת עזרה מובנית ותלוית הקשר, תוכנת ניפוי שגיאות ויזואלית (debugger) ועוד.