Qt (ערכת כלים)

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש
Qt
Qt logostrap CMYK.png
Qt Designer 4 4 3.png
שימוש ב-QtDesigner לעריכת ממשקי משתמש גרפיים
מפתח Qt Software (בעבר נקראה Trolltech)
גרסה אחרונה 5.3.2 ב־2 בנובמבר 2014 (לפני 22 ימים)
מערכת הפעלה חוצה-פלטפורמות
רישיון LGPL, GPL (עם חריגים מיוחדים של Qt), רישיון ציבורי Q, קנייני
קטגוריה ערכת כלים
http://qt.nokia.com

Qt (יוצריה הוגים זאת כמו‏[1]Cute), היא ערכת כלים וסביבת פיתוח לתוכנות, המשמשת בעיקר לפיתוח ממשקי משתמש גרפיים (במקרה זה היא נקראת ערכת widgets), אך משתמשת גם לפיתוח תוכנות ללא ממשק גרפי, כגון כלי קונסול ותוכנות לשרתים. ב-Qt משתמשים בין היתר ב-KDE, Opera, Google Earth, Skype, Virtual Box, ועוד. סביבת עבודה זו נוצרה בידי חברה נורבגית בשם Qt Software, שנודעה בעבר בתור Trolltech. החל מה-17 ביוני 2008, החברה נקנתה על ידי נוקיה, וכיום הסביבה מתוחזקת ומפותחת על ידי מחלקת פיתוח בנוקיה.

Qt משתמשת בקוד ++C בשילוב עם מספר הרחבות לא סטנדרטיות. אליהן נוסף קוד לפני-עיבוד (Pre-Processor) היוצר קוד ++C סטנדרטי לפני ההידור. ניתן להשתמש ב-Qt בשפות נוספות; קיימת הרחבה עבור שפת ADA בשם QtAda, הרחבה עבור #C בשם Qyoto/Kimono, הרחבה עבור Java בשם Qt Jambi, והרחבות נוספות ל-Pascal, ‏Perl, PHP, Ruby, פייתון ועוד. Qt רצה על כל הפלטפורמות העיקריות, אינה מוגבלת למערכת הפעלה או חומרה מסוימת ובעלת תמיכה נרחבת בבינאום. מלבד יצירת ממשקי משתמש גרפיים, Qt תומכת ב-SQL, ניתוח XML, ניהול תהליכים, תמיכה ברשתות, ממשק אחיד לניהול קבצים ועוד.

מגוון גרסאות[עריכת קוד מקור | עריכה]

Qt הופצה על ידי Trolltech בפלטפורמות הבאות:

  • Qt/X11 – עבור מערכות מבוססות X Windows, כדוגמת Unix או Linux.
  • Qt/Mac –עבור מערכת ההפעלה Mac OS X של Apple.
  • Qt/Windows –עבור מערכת ההפעלה חלונות של מיקרוסופט.
  • Qt/Embedded –עבור פלטפורמות מוכללות (סמרטפונים, מחשבי כף יד וכו').
  • Qt/WinCE – עבור מערכת ההפעלה חלונות‏[2]CE.
  • Qt Jambi – עבור שפת Java.
  • Qt Extended – עבור מחשבים ניידים מבוססי לינוקס (לא נתמך יותר).

קיימות ארבע גרסאות זמינות של Qt לכל אחת מהפלטפורמות, ונקראות:

  • Qt Console – גרסה לפיתוח תוכנות ללא ממשק משתמש גרפי.
  • Qt Desktop Light – גרסה בסיסית של Qt ליצירת ממשק משתמש גרפי, ללא תמיכה ברשתות או בסיסי נתונים.
  • Qt Desktop – גרסה מלאה.
  • Qt Open Source Edition – גרסה "מלאה", מלבד חריגים מסוימים, עבור מפתחי קוד פתוח או תוכנות חופשיות.

רישוי[עריכת קוד מקור | עריכה]

עבור גרסאות הקודמות לגרסה 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 גם תחת רישיון‏[3]LGPL.

כל הגרסאות תומכות במגוון רחב של מהדרים, בין היתר במהדר GCC של ++C, ותמיכה ב-Visual Studio של מיקרוסופט. בנוסף, קיימים תוספים עבור Visual Studio ו-Eclipse, כמו גם עורך קוד ייעודי - QtCreator.

גרסה נוכחית[עריכת קוד מקור | עריכה]

ב-28 ביוני 2005, Trolltech הוציאה את גרסה 4 של Qt, ובה הציגה חמש טכנולוגיות חדשות בסביבת העבודה:

  • צבעוני (Tulip) – סט של עצמי-מכלים גנריים (Template Containter Classes).
  • ראיון (Interview) – מודל או ארכיטקטורת הצגה להצגת עצמים.
  • ארתור (Arthur) – סביבת עבודה לציורים דו-ממדיים.
  • רשם (Scribe) – מציג טקסט Unicode עם API (ממשק תכנות יישומים) כללי לביצוע סידור טקסט ברמת עבודה נמוכה.
  • חלון-ראשי (MainWindow) – חלון ראשי מודרני מבוסס פעולות, בעל תפריטים, אפשרויות עגינת חלונות, שורת מצב ועוד.

גרסה 4.1 של Qt, שיצאה ב-19 בנובמבר 2005, הציגה בין היתר תמיכה מובנית ב-יצירת PDF והצגת קובצי SVG.

גרסה 4.2 של Qt, שיצאה ב-4 באוקטובר 2006, הציגה בין היתר תמיכה בויסטה, תמיכה טבעית בעיצוב Widgets בעזרת CSS, אובייקט לתמיכה בהצגה יעילה של אובייקטים דו-ממדיים על המסך.

גרסה 4.3 של Qt, שיצאה ב-30 במאי 2007, הציגה בין היתר שיפור בתמיכה בוויסטה, שיפור התמיכה ב-OpenGL, יצירת קובצי SVG.

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

גרסה 4.5 של Qt, שיצאה ב-3 במרץ 2009, הציגה תוספות משמעותיות, בין היתר את QtCreator – עורך הקוד של Qt, מנוע גרפי משופר, תמיכה בפורמטים של OpenDocument. כמו כן, הופצה הגרסה תחת רישיון LGPL לראשונה.

היסטוריה[עריכת קוד מקור | עריכה]

האוורד נורד ואיריק צ'מב-אנג (המפתחים המקוריים של Qt, והמנכ"ל והנשיא בהתאמה של Trolltech), התחילו לפתח את Qt בשנת 1991, שלוש שנים לפני שהחברה התאחדה עם קוואזר-טכנולוגיות, שינתה את שמה ל-Troll Tech, ולבסוף ל-Trolltech.

ערכת הכלים נקראה Qt כיוון שהאות Q נראתה נעימה לעין בפורט שבו האוורד השתמש בתוכנת ה-Emacs (תוכנה לעריכת טקסט בלינוקס/יוניקס), והאות t נלקחה מ-Xt, ערכת כלים מבוססת מערכת חלונות X (מערכת הפעלה לינוקסית)‏[4].

בשנת 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 לחלונות‏[5]. דבר זה נעשה בעקבות סירובה של טרולטק להפיץ גרסת Qt תחת רישיון GPL בטענה כי חלונות אינה תוכנה חופשית או בעלת קוד פתוח. למרות שפרויקט זה לא הגיע לאיכות של המקור, הוא השיג הצלחה משמעותית.

בעיות הרישיון נפתרו ביוני 2005, כאשר טרולטק הוציאה את Qt/Windows 4 תחת רישיון GPL. Qt גרסה 4 תומכת באותו סט של מערכות הפעלה במהדורה החופשית או בעלת הקוד הפתוח, כמו במהדורה הקניינית. דבר זה מאפשר ליצור תוכנות חופשיות או מבוססות קוד פתוח תחת רישיון GPL בעזרת Qt, בכל מערכות ההפעלה הנתמכות.

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

באוגוסט 2012 רכשה דיגיה, חברה שקודם לכן רכשה מנוקיה את הזכויות המסחריות על Qt, את הבעלות המלאה על Qt, והפכה לאחראית בלעדית על המשך פיתוח והפצת הספרייה.[1] דיגיה הרחיבה את התמיכה ב-Qt גם לפלטפורמות נוספות, כגון אנדרואיד ו-IOS 7.

סניפים[עריכת קוד מקור | עריכה]

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

רעיונות מרכזיים[עריכת קוד מקור | עריכה]

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

גרסאות ראשונות של Qt השתמשו במראה ממשק משתמש שנוצר על ידי Qt עצמו, ובא לדמות את המראה של הפלטפורמה המתאימה; דבר זה גרם לעתים לאי-התאמה במראה המערכת. הגרסאות האחרונות של Qt משתמשות בפקודות (API) טבעיות של מערכת ההפעלה על מנת ליצור את הכפתורים של‏[6]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 <QtGui/QApplication>
#include <QtGui/QLabel>
 
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QLabel label("Hello, world!");
    label.show();
    return app.exec();
}

התוכנות השונות המרכיבות את Qt[עריכת קוד מקור | עריכה]

חבילת הפיתוח של Qt מגיעה עם ארבע תוכנות בסיסיות עיקריות:

  • Qt Examples and Demos
  • QtAssistant
  • QtDesigner
  • QtLinguist

החל מגרסה 4.5 מצורפת תוכנה חמישית, לעריכת הקבצים, בשם QtCreator.

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) ועוד.

תוכנות המבוססות Qt[עריכת קוד מקור | עריכה]

  • Adobe Photoshop Album – תוכנה לארגון וסידור תמונות‏[7].
  • Doxygen – יוצר מסמכי ממשק תכנות יישומים (API) לתוכנות.
  • Freemat – סביבת חישובים נומריים ושפת תכנות חופשית.
  • Google Earth – תוכנה להצגת מיפוי תלת ממדי.
  • KDE – סביבות עבודה פופולרית מבוססת לינוקס.
  • LyX – ממשק משתמש גרפי עבור תוכנת LaTeX.
  • Motorola A760 – משתמש בממשק המשתמש שלו בגרסת Qt/Embedded.
  • Opera/Linux based – דפדפן אינטרנט.
  • סקייפ – תוכנת VoIP בשיטת P2P.
  • VirtualBox – תוכנה לוירטואליזציה (Virtualization) מחשבים.
  • VLC Media Player – תוכנת קוד פתוח להצגת סרטים. מבוססת ממשק Qt החל מגרסה 0.9.

הערות שוליים[עריכת קוד מקור | עריכה]