আমি কীভাবে সি ++ এ গ্রাফিকাল ইউজার ইন্টারফেস তৈরি করব? [বন্ধ]


270

আমার এখন পর্যন্ত সমস্ত সি ++ প্রোগ্রাম হ'ল কমান্ড লাইন ইন্টারফেস ব্যবহার করেছে এবং আমার সাথে অভিজ্ঞতা হওয়া কেবলমাত্র অন্য একটি ভাষা পিএইচপি যা জিইআইআই সমর্থন করে না।

আমি সি ++ এ গ্রাফিকাল ইউজার ইন্টারফেস প্রোগ্রামিং দিয়ে কোথায় শুরু করব? আমি কীভাবে এটি তৈরি করব?


4
এটা নির্ভর করে. আপনি কোন ধরণের অপারেটিং সিস্টেমকে টার্গেট করছেন? অনেক জিইউআই ফ্রেমওয়ার্কগুলি ওএস-নির্দিষ্ট।
মাইকেল রতনপিন্থ

3
কি ওএস / প্ল্যাটফর্ম? বা, যদি আপনি ক্রস প্ল্যাটফর্মের জিইউআই অ্যাপ্লিকেশনগুলি লেখার বিষয়ে আগ্রহী হন, দয়া করে তাই বলুন - এই জিনিসগুলি সি ++ এর জন্য একটি বিশাল পার্থক্য করে ...
Shog9

3
পিএইচপি জিইউআই প্রোগ্রাম লেখার পক্ষে সমর্থন করে। কোন কারণে আপনি কম্যান্ড লাইন থেকে পিএইচপি প্রোগ্রাম চালাতে না পারে, এবং মত পিএইচপি-gtk GUI লাইব্রেরি হয় gtk.php.net এবং পিএইচপি-কিউটি php-qt.org সাহায্য করতে পারে এছাড়াও আপনি নির্ণয় করা পছন্দ করতে পারেন কেন আপনি প্রয়োজন C ++। অন্যান্য অনেক ভাষার তুলনায় সি ++ এ জিইউআই লেখা আরও শক্ত এবং আপনি সি সি ++ বা পিএইচপি বা জিইআইআই কোডগুলি কোড করার জন্য কিছু সহজতর লাইব্রেরিতে আপনার সি ++ কোড বান্ডেল করতে সক্ষম হতে পারেন।
কিবিবু

6
আপনার প্রশ্নটি এত বিস্তৃত যে আমি ভাবছি আপনি কেবলমাত্র সরঞ্জামকিটগুলির নাম বা এমনকি কিছু টিউটোরিয়ালও চাইবেন না। আপনি এমন কিছু বই চান যা আপনাকে এপিআই বা উদাহরণগুলির চেয়ে বেশি দেয় যা আসলে আপনাকে ধারণাগুলি দেয়। কেটিসি নীচে কিছু প্রস্তাব দিচ্ছে, তবে আমি পরামর্শ দেব, আপনি যে টুলকিটটি নিয়ে খেলা শুরু করার জন্য বেছে নিন না কেন এটি সম্পর্কে খুব বেশি পড়তে পারেন তা নিশ্চিত করুন।
কোয়ার্ক

6
"অন্যান্য ভাষাগুলির চেয়ে সি ++ তে জিইউআই লেখা আরও শক্ত" আপনি এই দাবির ভিত্তিটি কী করছেন?
পাইওটর

উত্তর:


163

মূলত, একটি অপারেটিং সিস্টেমের উইন্ডোটিং সিস্টেমটি এমন কিছু এপিআই কল প্রকাশ করে যা আপনি উইন্ডো তৈরি করতে বা উইন্ডোতে একটি বোতাম লাগানোর মতো কাজ করতে পারেন। মূলত, আপনি শিরোলেখ ফাইলগুলির একটি স্যুট পাবেন এবং আপনি স্টাডলিব এবং এর মতোই এইগুলি আমদানিকৃত লাইব্রেরিতে ফাংশনগুলি কল করতে পারেন printf

প্রতিটি অপারেটিং সিস্টেমটি তার নিজস্ব জিইউআই সরঞ্জামকিট, শিরোনাম ফাইলগুলির স্যুট, এবং এপিআই কল এবং তাদের নিজস্ব কাজ করার পদ্ধতি নিয়ে আসে। এছাড়াও জিটিকে , কিউটি , এবং ডাব্লুএক্সউজেটসের মতো ক্রস প্ল্যাটফর্মের সরঞ্জামকিট রয়েছে যা আপনাকে যে কোনও জায়গায় কর্মসূচি তৈরি করতে সহায়তা করে। প্রতিটি প্ল্যাটফর্মে একই এপিআই কল পেয়ে তারা এ অর্জন করে, তবে দেশীয় ওএস এপিআই কলগুলিতে ডেকে আনা সেই এপিআই ফাংশনগুলির জন্য একটি পৃথক বাস্তবায়ন।

তাদের সকলের মধ্যে একটি জিনিস মিলবে যা একটি সিএলআই প্রোগ্রাম থেকে আলাদা হবে, এটি ইভেন্ট লুপ নামে পরিচিত। মূল ধারণাটি কিছুটা জটিল, এবং সংকোচিত হওয়া কঠিন, তবে সংক্ষেপে এর অর্থ হ'ল আপনার প্রধান শ্রেণিতে / প্রধান কার্যক্রমে অনেক কিছুই একটি নরক হিসাবে চলে না:

  • কোনও নতুন ইভেন্ট আছে কিনা তা ইভেন্টের সারিটি পরীক্ষা করে দেখুন
  • যদি থাকে তবে সেই ইভেন্টগুলি উপযুক্ত হ্যান্ডলারের কাছে প্রেরণ করুন
  • আপনার হয়ে গেলে, অপারেটিং সিস্টেমে নিয়ন্ত্রণ ফিরিয়ে আনুন (সাধারণত কোনও ধরণের বিশেষ "ঘুম" বা "নির্বাচন করুন" বা "ফলন" ফাংশন কল দিয়ে)
  • অপারেটিং সিস্টেমটি শেষ হয়ে গেলে ফলন ফাংশনটি ফিরে আসবে এবং লুপটির চারপাশে আপনার আবার যেতে হবে।

ইভেন্ট ভিত্তিক প্রোগ্রামিং সম্পর্কে প্রচুর সংস্থান রয়েছে। আপনার যদি জাভাস্ক্রিপ্টের সাথে কোনও অভিজ্ঞতা থাকে তবে এটি একই বুনিয়াদী ধারণা ব্যতীত, আপনি, স্ক্রিপ্টারের ইভেন্ট লুপের নিজেই অ্যাক্সেস বা নিয়ন্ত্রণ নেই বা কী ঘটনা রয়েছে তা আপনার হ্যান্ডলারের লেখার নিবন্ধন করা to

আপনার মনে রাখা উচিত যে জিইউআই প্রোগ্রামিং সাধারণভাবে অবিশ্বাস্যরকম জটিল এবং কঠিন। আপনার যদি বিকল্পটি থাকে তবে আপনার প্রোগ্রামে কেবল একটি এমবেডেড ওয়েবসার্ভারকে একীভূত করা এবং এইচটিএমএল / ওয়েব ভিত্তিক ইন্টারফেস থাকা আসলে এটি অনেক সহজ। আমি যে ব্যতিক্রমের মুখোমুখি হয়েছি সেটি হ'ল অ্যাপলের কোকো + এক্সকোড + ইন্টারফেস বিল্ডার + টিউটোরিয়াল যা এটি জিইআইআই প্রোগ্রামিংয়ে নতুন যে লোকেরা দেখেছি তাদের পক্ষে সহজেই তাদের কাছে পৌঁছানোর সহজ পরিবেশ তৈরি করে।


" কেবলমাত্র আপনার প্রোগ্রামে এম্বেড হওয়া ওয়েবসার্ভারকে একীভূত করা এবং এইচটিএমএল / ওয়েব ভিত্তিক ইন্টারফেস থাকা আসলে এটি অনেক সহজ " "এটি নির্ভর করে। আপনি যদি অভিনব জিনিসগুলি (জটিল ইউআই, কাস্টম নিয়ন্ত্রণ, অ্যানিমেশন ইত্যাদি) করতে চান তবে হ্যাঁ। আপনি যদি কেবল একটি সাধারণ জিইউআই চান (সাধারণ নিয়ন্ত্রণ এবং স্থানীয় অনুভূতি সহ), না।
আকর

167

এখানে রয়েছে প্রচুর পরিমাণে বিনামূল্যে পোর্টেবল জিইউআই লাইব্রেরি , যার প্রতিটি নিজস্ব শক্তি এবং দুর্বলতা রয়েছে:

বিশেষত কিউটিতে সুন্দর টিউটোরিয়াল এবং সরঞ্জাম রয়েছে যা আপনাকে শুরু করতে সহায়তা করে। উপভোগ করুন!

তবে দ্রষ্টব্য, আপনার প্ল্যাটফর্ম নির্দিষ্ট কার্যকারিতা যেমন Win32 এপিআই বা এমএফসি এড়ানো উচিত should এটি আপনাকে প্রায় কোনও সুবিধা ছাড়াই একটি নির্দিষ্ট প্ল্যাটফর্মে অযথা সংযুক্ত করে।


25
ব্যক্তিগতভাবে, আমি মনে করি উইন 32 এপিআইতে প্রোগ্রামিংটি সুন্দর। আমি কিউটি ব্যবহারের চেয়ে এটিকে অনেক বেশি পছন্দ করি এবং এটি নিজেই একটি সুবিধা। যদিও এটি কেবল আমিই
mrduclaw

6
আমার ব্যক্তিগত অভিজ্ঞতা ঠিক বিপরীত। Win32 API আমার জন্য অন্য কোনও এপিআইর চেয়ে বেশি ঝামেলা সৃষ্টি করেছিল caused
vog

17
@ এমরডাকলা, "আমি মনে করি উইন 32 এপিআইতে প্রোগ্রামিংটি সুন্দর" is আমি পোর্টেবল কোড লেখার জন্য সর্বদা চেষ্টা করে দেখি। (দয়া করে নোট করুন যে আমি "চেষ্টা" শব্দটি ব্যবহার করেছি কারণ এর ব্যতিক্রম রয়েছে ...) নন-পোর্টেবল কোডটি কীভাবে "সুন্দর" হিসাবে বিবেচিত হয়?
ট্রেভর বয়ড স্মিথ

11
@ ট্র্যাভার বয়েড স্মিথ: আমি মনে করি বিভিন্ন লক্ষ্য রয়েছে। আমি যে কোডটি পেশাগতভাবে লিখেছি তার প্রায় কোনওটিই সম্ভবত ক্রস প্ল্যাটফর্ম হতে পারে তাই এটি আমার পক্ষে কখনই উদ্বেগের বিষয় নয়।
mrduclaw

1
মিলিয়ন ডলারের প্রশ্ন হ'ল যে ছেলেরা গেম প্রশিক্ষক তৈরি করে তাদের কেবলমাত্র ছোট্ট এক্সপি সরবরাহ করে এবং তাদের প্রোগ্রামগুলিতে সুন্দর ইউআই থাকে তাই আমি অবাক হয়েছি কীভাবে তারা ইউআই তৈরি করে তারা এই তৃতীয় পক্ষের লিবারিগুলি সরবরাহ করে না?
ব্যবহারকারীর 889030

74

ওএস স্বতন্ত্র অ্যালগরিদম " তিন ধাপে সি ++ এ জিইউআই অ্যাপ্লিকেশন তৈরি করছে ":

  1. কিউটি ক্রিয়েটার ইনস্টল করুন

    এখানে চিত্র বর্ণনা লিখুন

  2. নতুন প্রকল্প তৈরি করুন (কিউটি উইজেটস অ্যাপ্লিকেশন)

    এখানে চিত্র বর্ণনা লিখুন

  3. এটি তৈরি করুন।

অভিনন্দন, আপনি C ++ এ আপনার প্রথম জিইউআই পেয়েছেন।

"হ্যালো ওয়ার্ল্ড" জিইউআই অ্যাপ্লিকেশনটির চেয়ে আরও জটিল কিছু তৈরি করার জন্য এখন আপনি প্রচুর ডকুমেন্টেশন পড়তে প্রস্তুত ।


অতীতে, আমি অন্যান্য জিইআইআই পর্যাপ্ত শিক্ষানবিস-বান্ধব না হওয়ায় সমস্যা ছিল। তবে, কিউটির কয়েকটি দুর্দান্ত টিউটোরিয়াল রয়েছে। সুপারিশ করার জন্য আপনাকে ধন্যবাদ!
জেডি

23

"উদাহরণ হিসাবে উইন্ডোজ এক্সপি বলুন" এর মন্তব্য দেওয়া, তারপরে আপনার বিকল্পগুলি হ'ল:

  • মাইক্রোসফ্ট উইন্ডোজ জন্য বিস্মিত সারপ্রাইজ কল উইন্ডোজ এপিআই এর মাধ্যমে অপারেটিং সিস্টেমের সাথে সরাসরি যোগাযোগ করুন । উইনএপিআইয়ের সুনির্দিষ্ট রেফারেন্স হ'ল মাইক্রোসফ্টের এমএসডিএন ওয়েবসাইট । এর জন্য একটি জনপ্রিয় অনলাইন শিক্ষানবিশ টিউটোরিয়াল হ'ল ফোরজারের উইন 32 এপিআই প্রোগ্রামিং টিউটোরিয়াল । এর জন্য ক্লাসিক বইটি চার্লস পেটজোল্ডের প্রোগ্রামিং উইন্ডোজ, 5 তম সংস্করণ

  • এমএফসি-র মতো নির্দিষ্ট গ্রন্থাগার (ওএস এবং সংকলক উভয় ক্ষেত্রেই) নির্দিষ্ট গ্রন্থাগার ব্যবহার করুন , যা WinAPI কে সি ++ শ্রেণিতে আবৃত করে। এর জন্য রেফারেন্সটি আবার এমএসডিএন। এর জন্য একটি ক্লাসিক বই হ'ল জেফ প্রোসিসের প্রোগ্রামিং উইন্ডোজ উইথ এমএফসি, ২ য় সংস্করণ । আপনি যদি কোডগিয়ার সি ++ বিল্ডার ব্যবহার করে থাকেন তবে এখানে বিকল্পটি ভিসিএল

  • একটি ক্রস প্ল্যাটফর্ম লাইব্রেরি যেমন GTK + (সি ++ মোড়ক: gtkmm ), Qt , wxWidgets , বা FLTK ব্যবহার করুনযে নির্দিষ্ট ওএস এর এপিআই মোড়ানো। এর সাথে সুবিধাগুলি হ'ল সাধারণভাবে, সোর্স কোডগুলি পরিবর্তন না করেই আপনার প্রোগ্রামটি বিভিন্ন ওএসের জন্য সংকলন করা যেতে পারে। ইতিমধ্যে উল্লেখ করা হয়েছে যে, তাদের প্রত্যেকের নিজস্ব শক্তি এবং দুর্বলতা রয়েছে। কোনটি ব্যবহার করবেন তা নির্বাচন করার সময় তার বিবেচনাটি তার লাইসেন্স। প্রদত্ত উদাহরণগুলির জন্য, জিটিকে + এবং জিটি কে মিমি এলজিপিএল এর অধীনে লাইসেন্স, কিউটি মালিকানাধীন বিকল্প সহ বিভিন্ন লাইসেন্সের অধীনে, ডাব্লুএক্সউজেটস নিজস্ব ডাব্লু উইন্ডোজ লাইসেন্সের অধীনে (ডাব্লুএক্সউইজেডস লাইসেন্সের নামকরণ সহ), এবং এফএলটিকে ব্যতিক্রম বাদে এলজিপিএল এর অধীনে। রেফারেন্স, টিউটোরিয়াল এবং বা বইয়ের জন্য, বিশদের জন্য প্রত্যেকের ওয়েবসাইটে দেখুন।


9
এমএফসি খারাপ। আমি যদি অন্য কোনও পছন্দ না করতাম তবে আমি WIN API ব্যবহার করতে পছন্দ করতাম।
the_drow


18

যেহেতু আপনি এখনই যেখানে রয়েছেন আমি ইতিমধ্যে ছিলাম বলে আমি মনে করি আমি আপনাকে "উত্তর" দিতে পারি।

ঘটনাটি হ'ল জিইউআই করার সহজ কোনও উপায় নেই। জিইউআই প্ল্যাটফর্ম এবং ওএস নির্দিষ্ট কোডের উপর অত্যন্ত নির্ভরশীল, এজন্য আপনার উইন্ডো পরিচালনা APIs এ আপনার লক্ষ্য প্ল্যাটফর্ম / ওএস ডকুমেন্টেশন পড়া শুরু করা উচিত। ভাল জিনিসটি হ'ল: প্রচুর পরিমাণে গ্রন্থাগার রয়েছে যা এই সীমাবদ্ধতাগুলিকে সম্বোধন করে এবং একক বহু-প্ল্যাটফর্ম এপিআইয়ের বিমূর্ত আর্কিটেকচার পার্থক্যগুলি। আগে প্রস্তাবিত, জিটিকে এবং কিউটি, এর মধ্যে কয়েকটি লাইব্রেরি।

তবে এগুলি কিছুটা জটিলও , যেহেতু প্রচুর নতুন ধারণা, উপাত্তের ধরণ, নেমস্পেস এবং ক্লাসগুলি একসাথে চালু করা হয়েছে। এই কারণে, তারা কিছু জিইউআই ডাব্লুওয়াইএসআইডাব্লু সম্পাদক এর সাথে বান্ডিল হয়ে আসে। তারা প্রায়শই জিইআইআই দিয়ে প্রোগ্রামিং সফটওয়্যার তৈরি করে।

এটি সংক্ষেপে বলতে গেলে জিইউআই বিকাশের জন্য মাইক্রোসফ্টের ভিজ্যুয়াল স্টুডিওর মতো অ-নিখরচায় "পরিবেশ" রয়েছে। যাদের জন্য ডেল্ফী অভিজ্ঞতা ব্যাকগ্রাউন্ড, ভিসুয়াল স্টুডিও আরো পরিচিত হতে পারে। মাইক্রোসফ্ট থেকে সরবরাহ করা সম্পূর্ণ ভিজ্যুয়াল স্টুডিও পরিবেশের জন্য বিনামূল্যে বিকল্প রয়েছে: ভিজ্যুয়াল স্টুডিও এক্সপ্রেস , যা জিইউআই বিকাশ শুরু করার জন্য পর্যাপ্ত পরিমাণে বেশি।


15

আমি একটি "সরল" টিউটোরিয়াল সহ একটি ওয়েবসাইট পেয়েছি: http://www.winprog.org/tutorial/start.html


8
এটি উইন 32 এপিআই প্রবর্তন করে, জিইউআই প্রোগ্রামিংয়ের একটি খুব নিম্ন স্তরের পদ্ধতির যা আপনাকে উইন্ডোজ প্ল্যাটফর্মের সাথে সংযুক্ত করে। আমি এটি সুপারিশ করব না।
vog

17
এটি একটি বৈধ বিকল্প। আমি সম্মত হই যে এটি শুরু করার জন্য সেরা জায়গা নাও হতে পারে তবে এটি নিচে ভোটের যোগ্য নয়।
এমিল এইচ

1
আমি জানি এটি আদর্শ সমাধান নয় তবে এটি উইন্ডোজের গুই সিস্টেম কীভাবে কাজ করে তা শিখতে সহায়তা করে। আমি কয়েক বছর আগে এই টিউটোরিয়ালটি পড়েছি এবং এখন আমি জানি বার্তাটির লুপটি কী এবং এটি কীভাবে কাজ করে। । নেট এ উইনফর্মগুলি নিয়ে কাজ করার সময় এই জ্ঞানটি কাজে আসবে।
জিপ্পিভি

7
আপনি যদি ডেস্কটপ অ্যাপ্লিকেশন লিখতে চলেছেন তবে ওএস কীভাবে ব্যবহারকারীর সাথে সত্যিকার অর্থে রেন্ডার এবং ইন্টারঅ্যাক্ট করে তা জানার বিকল্প নেই। আপনি যদি কেবলমাত্র মৌলিক বিষয়গুলি না বুঝে একটি লাইব্রেরি ব্যবহার করেন তবে কী ঘটছে তা আপনি কখনই বুঝতে পারবেন না। কিছুটা কম স্তরের উইন 32 গুই প্রোগ্রামিং শিখলে ভাল সময় ব্যয় হবে।
টেক্সাসের জিম

টেক্সাসে জিম: আমি সম্মত, তবে এই "নিম্ন স্তরের কিছুটা" বেসিকগুলির পরে শেখা উচিত , তাই আমি এখনও সেই প্রস্তাবটি নতুনদের জন্য অনুপযুক্ত বলে মনে করি।
vog

3

সি ++ এ একটি নেট নেট উইন্ডোজ জিইউআই তৈরি করা সহজ।

এমএসডিএন থেকে নিম্নলিখিত টিউটোরিয়ালটি দেখুন । আপনার প্রয়োজনীয় সমস্ত কিছু (ভিজ্যুয়াল সি ++ এক্সপ্রেস) বিনামূল্যে ডাউনলোড করতে পারেন ।

অবশ্যই আপনি নিজেকে নেট থেকে বেঁধে রাখেন, তবে আপনি যদি কেবল চারপাশে খেলেন বা কেবল একটি উইন্ডোজ অ্যাপ্লিকেশন প্রয়োজন হয় তবে আপনি ভাল হয়ে যাবেন (বেশিরভাগ লোকের এখনও উইন্ডোজ রয়েছে ... আপাতত)।


3

আমি FLTK ব্যবহার করি কারণ Qt বিনামূল্যে নয়। আমি ডাব্লুউইজেডস নির্বাচন করি না , কারণ আমার প্রথম পরীক্ষার সাথে হ্যালো, ওয়ার্ল্ড! প্রোগ্রামটি 24 এমবি, এফএলটিকে 0.8 এমবি একটি নির্বাহযোগ্য উত্পাদন করে ...


4
কিউটি লাইসেন্স পরিবর্তনের কারণে, আমি
23'13 এ

2
আমার নিজের wxWidgets কর্মসূচি! 5.9 MB হয়, এমনকি ভিতরে সব লিঙ্ক লাইব্রেরী সঙ্গে
msangel
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.