الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استفسار: هل يمكن كتابة كود سي في ال QT وتنفيذه

بدأه ibr_exn في 8 ديسمبر 2009 · 10 رد · 1,751 مشاهدة · في قسم Cross Platform GUI Libraries العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم،

هل يمكن كتابة كود سي (وليس سي ++) في ال QT وتنفيذه؟

اذا ممكن الرجاء ايضاح ذلك.

الحمد لله الذي هدانا لهذا وماكنا لنهتدي لولا ان هدانا الله

#2

وعليكم السلام ورحمة الله وبركاته

لا أعتقد ذلك ف Qt بالكامل تعتمد على c++ هي مكتبة تعتمد على الكائنات بالكامل

فأنت بحاجة الى الوراثة اذا ما اردت استخدام الأحداث او ال threads h وحتى للتعامل مع signal و slots .

اعتقد والله اعلم اننا يجب ان نستخدم ال c++ .

بسم الله الرحمن الرحيم

مدونة دوال

كيوتي العربي

#3

اشكرك على الرد. كنت اعتقد ان السي موجودة ضمنيا ضمن السي ++.

الحمد لله الذي هدانا لهذا وماكنا لنهتدي لولا ان هدانا الله

#4

إستخدم GTK+ و أرح بالك .

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#5

وعليكم السلام ورحمة الله وبركاته ،

يمكنك ان تستخدم كود سي بداخل مشروع كيوتي بدون أي مشاكل ، لان المترجم سيتعامل معه على أنه كود سي++.

و في حالة استخدام مكتبة خارجية (أو object file ) متكوبة بالسي ، عليك ان تحيط ملف الرأس له ب

extern "C" {

}

وذلك حتى لا يقوم مترجم سي++ بعمل Mangling لل symbol الموجودة في ملف الرأس ، والتي ستسبب مشكلة عند الربط linking.

مثال بسيط :

ملف Cfunctions.h

#ifndef CFUNCTIONS_H
#define CFUNCTIONS_H

int sqr(int);

#endif	// CFUNCTIONS_H

ملف Cfunctions.c

#include "Cfunctions.h"

int sqr(int n)
{
    return n*n;
}

ملف main.cpp

#include <QCoreApplication>
#include <stdio.h>


extern "C" {
    #include "Cfunctions.h"
}

int main(int argc,char* argv[])
{
    QCoreApplication app(argc,argv);

    int x = sqr(3);

    printf("x = %d\n",x);

    return 0;
}

النتيجة = 9.

لكن هذا لا يعني انك لن تستخدم سي++ ، فكيوتي مبنيه بها OOP لذلك يجب ان تستخدم سي++ لانشاء الفئات والوراثة والواجهات الرسومية و...الخ.

بالتوفيق.

تم تعديل هذه المشاركة بواسطة SudaNix في 9 ديسمبر 2009 في 03:59

4
#6

اشكرك اخي SudaNix كفيت واوفيت.

جاري التجربه.

الحمد لله الذي هدانا لهذا وماكنا لنهتدي لولا ان هدانا الله

#7

في الوندوز دالة scanf بتعطي خطأ اثناء التنفيذ runtime وجدت هذا الموضوع هنا ولكن لا اعرف ماذا يفترض ان اعمل

الحمد لله الذي هدانا لهذا وماكنا لنهتدي لولا ان هدانا الله

#8

ضع الكود.

الدالة تعمل جيدا ، لكن اذا كنت في نظام ويندوز يجب أن تضيف السطر التالي الى ملف المشروع .pro

CONFIG += console

حتى تستطيع أن تتعامل مع الشاشة النصية I/O .

وفي لينوكس لا يجب ان تضيف شيئا.

بالتوفيق.

#9

اشكرك اخي على سرعة الرد. السطر المذكور موجود مسبقا. و البرنامج يعطي الخطأ اعلاه.

الحمد لله الذي هدانا لهذا وماكنا لنهتدي لولا ان هدانا الله

#10

خطأ وقت ال runtime غالبا بسبب مشاكل الذاكرة allocate/deallocate ، ربما استخدمت scanf بشكل خاطئ..

ضع الكود الذي يسبب المشكلة.

بالتوفيق.

1
#11
اقتباس
ربما استخدمت scanf بشكل خاطئ

يا سلام عليك. فعلا ، نسيت كتابة & قبل المتغير.

اشكرك مرة اخرى لطولة بالك. :wub:

الحمد لله الذي هدانا لهذا وماكنا لنهتدي لولا ان هدانا الله

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…