ورود

View Full Version : مبتدی: اجرا شدن برنامه در notifaction area win7



raminlich
دوشنبه 03 شهریور 1393, 11:43 صبح
سلام به همگی
به عنوان مثال من یه برنامه نوشتم حالا می خوام تو این قسمت ویندوز بزارم منظورم همون قسمته برنامه های پیشه ساعته.
ممنون میشم کمکم کنید.

omid_kma
دوشنبه 03 شهریور 1393, 12:35 عصر
از این کلاس http://qt-project.org/doc/qt-5/QSystemTrayIcon.html استفاده کن
مثال ازاستفاده :
http://www.7khatcode.com/985/%DA%AF%D8%B0%D8%A7%D8%B4%D8%AA%D9%86-%D8%A7%DB%8C%DA%A9%D9%88%D9%86-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%A8%D8%A7-qt-%D8%AF%D8%B1-system-tray?show=985#q985

raminlich
دوشنبه 03 شهریور 1393, 14:18 عصر
ممنون از راهنماییت
از اون لینک Qt که چیزی نفهمیدم :لبخند:
بیشتر از رو مثاله فهمیدم چی شده حالا یه سوال این مثال فقط menu هارو میسازه من چجوری بش بگم که مثلا item 1 رو زد فلان چیزو باز کنه باز کنه

omid_kma
دوشنبه 03 شهریور 1393, 14:35 عصر
باید سیگنال triggered منو رو connect کنی به SLOT خودت مثلا این کد رو اجرا کن

#include <QApplication>
#include <QSystemTrayIcon>
#include <QMenu>
#include <QAction>
#include <QFileDialog>


int main(int argc, char *argv[])
{
QApplication a(argc, argv);


QSystemTrayIcon *trayIcon=new QSystemTrayIcon();
QMenu *menu=new QMenu("title");
menu->addAction("Open file");
menu->addAction("Exit");
trayIcon->setContextMenu(menu);
trayIcon->setIcon(QIcon("D:\\icon.png"));
trayIcon->show();
trayIcon->showMessage("Title","Hi Im here !");


QObject::connect(menu,&QMenu::triggered,[](QAction* act){
const auto& text = act->text();
if(text=="Exit"){
QApplication::exit();
}
else if(text=="Open file"){
QFileDialog::getExistingDirectory();
}
});


QApplication::setQuitOnLastWindowClosed(false);


return a.exec();
}

raminlich
دوشنبه 03 شهریور 1393, 17:06 عصر
من اینو می خواستم اجرا کنم ولی کلی ارور داد
خودت یه نگاهی بنداز

MRmoon
دوشنبه 03 شهریور 1393, 21:12 عصر
درود.

یه مثال تو خود کیوت هست برای اینکار پوشه ی example ها رو یه نگاه بنداز با یه اسمی مثل tray icon.

محمد.

raminlich
دوشنبه 03 شهریور 1393, 21:40 عصر
درود.

یه مثال تو خود کیوت هست برای اینکار پوشه ی example ها رو یه نگاه بنداز با یه اسمی مثل tray icon.

محمد.]
گشتم نبود با این اسم اگه میشه اسم دقیقش رو بگین یا همینجا ضمیمش کن
ممنون

omid_kma
دوشنبه 03 شهریور 1393, 22:04 عصر
من اینو می خواستم اجرا کنم ولی کلی ارور داد
خودت یه نگاهی بنداز
باید flag
C++‎‎‎‎‎‎11 رو فعال کنید http://www.7khatcode.com/580/%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-c-11-%D8%AF%D8%B1-qt?show=580#q580
Qt5 به بالا هم باید داشته باشید

raminlich
دوشنبه 03 شهریور 1393, 23:39 عصر
ممنون ولی یه مشکل دیگه
#include "mainwindow.h"
#include <QApplication>
#include <QSystemTrayIcon>
#include <QMenu>
#include <QAction>
#include <QFileDialog>
#include <QMessageBox>
int main(int argc, char *argv[])
{
MainWindow w;
QApplication a(argc, argv);
QSystemTrayIcon *trayIcon=new QSystemTrayIcon();
QMenu *menu=new QMenu("TimeUsage");
menu->addAction("Open");
menu->addAction("Exit");
trayIcon->setContextMenu(menu);
trayIcon->show();
trayIcon->showMessage("TimeUsage","TimeUsage Is Here!");

QObject::connect(menu,&QMenu::triggered,[](QAction* act){
const auto& text = act->text();
if(text=="Exit"){
QApplication::exit();
}
else if(text=="Open"){
w.show();
}
});


QApplication::setQuitOnLastWindowClosed(false);

return a.exec();
}


یه ارور میده تا حالا ندیدم:اشتباه:
'w' is not captured

raminlich
دوشنبه 03 شهریور 1393, 23:49 عصر
حلش کردم:لبخند:
باید Mainwindow w رو می بردم زیر QAplication
خط 20 هم باید اینطوری مینوشتم
QObject::connect(menu,&QMenu::triggered,[&w](QAction* act){