質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Qt

QtはGUIプログラムの開発で広く使われているクロスプラットフォーム開発のフレームワークです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

2021閲覧

Qtでデスクトップ通知を出す方法

wabisuke2718

総合スコア96

Qt

QtはGUIプログラムの開発で広く使われているクロスプラットフォーム開発のフレームワークです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2017/05/01 14:30

Qtでデスクトップ通知を出す方法が分かりません。
QSystemTrayIcon::showMessageを試してみましたが、
何も出てきませんでした。
出来ればQtの標準機能でデスクトップ通知を出す方法が知りたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

私はRubyでQtをしている人間です。

Ruby

1#encoding: utf-8 2require"qt" 3 4class Notification < Qt::Widget 5 def initialize 6 super 7 setFixedSize(Qt::Size.new(200, 120)) 8 notification = Qt::PushButton.new("Start", self) 9 notification.setGeometry(10, 40, 180, 40) 10 connect(notification, SIGNAL("clicked()"), self, SLOT("notification()")) 11 end 12 13 slots "notification()" 14 15 def notification() 16 tray = Qt::SystemTrayIcon.new 17 tray.setIcon(Qt::Icon.new("icon.png")) 18 tray.show 19 tray.showMessage("Notification", "This is sample.") 20 end 21end 22 23app = Qt::Application.new(ARGV) 24notification = Notification.new 25notification.show 26 27app.exec

RubyのQtで試したところ、デスクトップ通知が表示されました。
このコードは
QtRubyサンプル
QSystemTrayIcon Example
をほとんどそのまま使っています。
RubyのQtの場合はtray.showの位置がtray.showMessageよりも
下だと通知が表示されなくなりました。
setIconでiconを指定しておかないとエラーが発生します。

私はQt初心者なので私の言っていることを信じてはいけませんが
Qtは言語が違っても似ているところがあるのでC++以外の言語の
sampleも漁ってみると良いかもしれません。
私もよくPythonやC++のQtのサンプルをRubyのコードに使っています。

投稿2017/05/01 15:52

編集2017/05/01 16:04
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wabisuke2718

2017/05/01 16:29

showを入れると通知が出るようになりましたが、メッセージ(タイトルでない)が文字化けします。なぜでしょうか。
退会済みユーザー

退会済みユーザー

2017/05/01 22:34 編集

私の場合は通知に日本語を使っても文字化けはしませんが、以前contextmenuに日本語を使った時は文字化けしました。文字コードが異なっているなどが原因だと思いますが今のところ解決できていません。 文字化けしないように今は英語を使っています。 もしかしたら「QStringの文字化け対策」(http://qt-log.open-memo.net/sub/trouble__garble_QString.html)というページが参考になるかもしれません。
pashango2

2017/05/10 05:39 編集

Qtの標準の文字コードは’UTF-8'です。 おそらくコードの文字コードはUTF-8以外または、メッセージを格納している外部ファイルがUTF-8以外になっていませんか? Windowsの場合、古いVCですと文字コードをCP932に変更してしまう仕様があったので、その可能性もあります。 リテラルをそのまま渡すのではなく、一旦.toString()した方がよいかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問