আমি কিউটি / সি ++ দিয়ে কীভাবে একটি কার্যকারী সূচক তৈরি করব?


8

আমি আমার অ্যাপ্লিকেশন তৈরি করতে কিউটি আইডিই ব্যবহার করছি যাতে উবুন্টু শোডাউন প্রতিযোগিতায় অংশ নিতে পারি। আমার আবেদনে, আমি নিম্নলিখিতগুলি করেছি:

void show_app(MainWindow *data)
{
    //this works fine:
    app_indicator_set_status(appindicator, APP_INDICATOR_STATUS_PASSIVE);
    //this crashes the application:
    data->show();
}


void MainWindow::make_indicator()
{
    if(appindicator){
        //appindicator has already been created
        return;
    }
    appindicator = app_indicator_new("Format Junkie Indicator", "formatjunkie", APP_INDICATOR_CATEGORY_APPLICATION_STATUS);
    GtkWidget* showapp_option;
    GtkWidget* indicatormenu = gtk_menu_new();
    GtkWidget* item = gtk_menu_item_new_with_label("Format Junkie main menu");
    gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), indicatormenu);

    showapp_option = gtk_menu_item_new_with_label("Show App!");
    g_signal_connect(showapp_option, "activate", G_CALLBACK(show_app), this);
    gtk_menu_shell_append(GTK_MENU_SHELL(indicatormenu), showapp_option);

    gtk_widget_show_all(indicatormenu);
    app_indicator_set_status(appindicator, APP_INDICATOR_STATUS_ACTIVE);
    app_indicator_set_attention_icon(appindicator, "dialog-warning");

    app_indicator_set_menu(appindicator, GTK_MENU (indicatormenu));
}

সুতরাং, মূলত আমি একটি সাধারণ সূচক এন্ট্রি করার চেষ্টা করছি, যা ক্লিক করার পরে এটি সূচকটি আড়াল করে অ্যাপ্লিকেশনটি প্রদর্শন করবে। সূচকটি সেখানে প্যাসিভ জিনিসটি ব্যবহার করে সফলভাবে আড়াল হতে পারে তবে কল ডেটা-> শো (); এর সময়, অ্যাপ্লিকেশন ক্রাশ হয়।

আমি যে ভুল করছি তাতে কোন সাহায্যের প্রশংসা হবে! এছাড়াও, দয়া করে আমার যে সমস্যার মুখোমুখি হচ্ছি তা সংশোধন করতে আমাকে সহায়তা করুন (বিকল্প হিসাবে, আমি পুরানো এবং ভাল ট্রে আইকনটিতে স্থানান্তরিত করব (এটি 12.04-এ ঠিকঠাকভাবে কাজ করে) যা আমি খুব সহজে এবং দক্ষতার সাথে পরিচালনা করতে পারি)


আপনি কি ত্রুটি পাচ্ছেন?
হার্নান্টজ

কোনও ত্রুটি নেই, এটি কেবল ক্র্যাশ করেছে :)
হাইট্রোমো

আপনি দয়া করে প্রশ্নটি ক্র্যাশ থেকে স্ট্যাকট্রেস যুক্ত করতে পারেন? এটি আপনার অ্যাপটি ক্র্যাশ করছে ঠিক সেই লাইনে নির্দেশ করবে। যদি আপনার এটির জন্য

3
নীচের লাইন: একটি সি ++ অ্যাপ্লিকেশনে জিটিকে এবং কিউটি মিশ্রণ করবেন না । ইভেন্ট লুপ প্রতিটি মধ্যে পৃথকভাবে কাঠামোগত হয় এবং আপনি ঝামেলা ছাড়া কিছুই করতে হবে।
নাথান ওসমান

উত্তর:


9

Qt প্রোগ্রামগুলিতে অ্যাপ্লিকেশন সূচক তৈরি করার জন্য আপনার libappindicator ব্যবহার করা উচিত নয় । আরও ভাল উপায় আছে!

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


ধন্যবাদ। আমি কিউসিস্টেমট্রে আইকনটি কীভাবে কাজ করে তা পুরোপুরি জানি এবং যেমনটি আমি দেখতে পাচ্ছি সনি-কিউটি প্রাক-ইনস্টলড আছে, তাই আমার যদি এটি নির্ভরতা হিসাবে থাকে তবে আমি দুঃখিত হব না! নিয়মগুলি আরও সুস্পষ্ট হওয়া উচিত, যদিও নির্দেশকের জিনিসটিতে (তারা সূচকগুলি ব্যবহারের সুপারিশ করে, তবে, Qt ট্রে আইকন তৈরি করে যা সূচকগুলিতে রূপান্তরিত হচ্ছে ...)) আপনার কাছে সম্ভবত অনুগ্রহ হবে তবে আমার 17 ঘন্টা অপেক্ষা করতে হবে।
হাইট্রোমো

2
এই প্যাকেজটি (স্নি-কিউটি) এখন ভেঙে গেছে।
গডার্ড

2
"আরও ভাল উপায় আছে!" কিউটি 5 এর সাথে নয়, নেই।
নাথান ওসমান

-1

আমি বলব আপনি এখানে "* এটি" এর মতো পয়েন্টার হিসাবে "এই" পয়েন্টারটি পাস করার চেষ্টা করছেন

g_signal_connect(showapp_option, "activate", G_CALLBACK(show_app), this);

প্রতি

g_signal_connect(showapp_option, "activate", G_CALLBACK(show_app), *this);

ধন্যবাদ, আমি এটিকে একটি এরো হিসাবে গ্রহণ করেছি (এটি সংকলন করে না): ত্রুটি: 'মাইনউইন্ডো' কে আর্গুমেন্টের জন্য '4' থেকে 'গুলং g_signal_connect_data (gpointer, Const gchar *, GCallback,' তে রূপান্তর করতে পারে না) gpointer, GClosureNotify, GConnectFlags) '
হাইট্রোমো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.