Linuxでシステムトレイにアイコン表示(qt/C++)
前回までに、Linuxでシステムトレイにgtkを使ってC++/pythonでアイコン表示してみたのですが、
今回はqtを使ってC++でアイコン表示してみようと思います。
実装
内容的にはgtkのときとほぼ同じことをするコードです。
#include <QtWidgets/QApplication>
#include <QtGui/QIcon>
#include <QtWidgets/QSystemTrayIcon>
#include <QtWidgets/QMenu>
int main(int argc, char **argv)
{
QApplication app(argc, argv);
QMenu* menu = new QMenu();
QAction* exitAction = new QAction("Exit", menu);
menu->addAction(exitAction);
QIcon oIcon = QIcon::fromTheme("virtualbox");
QSystemTrayIcon *trayIcon = new QSystemTrayIcon(oIcon);
QObject::connect(trayIcon, &QSystemTrayIcon::activated,
[&](QSystemTrayIcon::ActivationReason reason) {menu->exec();});
QObject::connect(exitAction, &QAction::triggered,
[&](bool checked) {app.quit();});
trayIcon->setContextMenu(menu);
trayIcon->setVisible(true);
return app.exec();
}
cmake_minimum_required(VERSION 2.8.11)
project(example)
find_package(Qt5 5.7.0 REQUIRED COMPONENTS
Core
Widgets
)
set(CMAKE_AUTOMOC ON)
add_executable(${PROJECT_NAME}
main.cpp
)
target_link_libraries(${PROJECT_NAME}
Qt5::Core
Qt5::Widgets
)
結果
見た目は同じなので省略します。
メモリ
Lubuntu-LXQtでは…
$ ps -eo uid,pid,rss,vsz,args | grep example
1000 196686 34576 271408 ./example
...
$
Neon-KDEでは…
$ ps -eo uid,pid,rss,vsz,args | grep example
1000 1439 41684 281352 ./example
...
$
35~42MBという結果でした。
まとめ
C++の場合gtkからqtにすると、消費メモリがLubuntuでは13MBほど増え、Neonでは2MBほど減るようです。
次回はこれをpythonで書いてみます。
ディスカッション
コメント一覧
まだ、コメントがありません