QML 窗口最小化到托盘

今天也要元气满满哦 2015-05-21 12:31:29
点击按钮后窗口关闭 最小化到托盘 我知道需要使用QSystemTrayIcon但是不会使用 请大神们给个样例看看
...全文
673 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wsjzsj 2016-10-14
  • 打赏
  • 举报
回复
楼主qml加托盘功能的实现了吗?
  • 打赏
  • 举报
回复
引用 13 楼 xaioyaofeng 的回复:
楼主,请问解决了没有啊
m_trayMenu = new QMenu((QWidget*)QApplication::desktop()); 提示错误:QWidget: Cannot create a QWidget without QApplication 然后直接弹出程序中止,忽略的弹出框 m_trayMenu = new QMenu; 用这个也是不行 现在界面运行可以看到 右下角的托盘图标 最小化和点击显示(利用信号和槽) 但是右键的菜单添加不了,是不是因为我是QQmlApplicationEngine+Window 而不是QQuickView + Item 的原因?这个要怎么创建右键菜单呢
xaioyaofeng 2015-05-25
  • 打赏
  • 举报
回复
楼主,请问解决了没有啊
  • 打赏
  • 举报
回复
上面问题已解决,现在是怎么设置托盘托盘的菜单项??: m_trayMenu = new QMenu((QWidget*)QApplication::desktop()); 这句话直接弹出了一个程序中止的警告,是不是因为我的是QQmlApplicationEngine+Window 造成的? 需要怎么修改呢
  • 打赏
  • 举报
回复
trayIcon.obj:-1: error: LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall QSystemTrayIcon::QSystemTrayIcon(class QObject *)" (__imp_??0QSystemTrayIcon@@QAE@PAVQObject@@@Z),该符号在函数 "public: __thiscall TrayIcon::TrayIcon(class QObject *)" (??0TrayIcon@@QAE@PAVQObject@@@Z) 中被引用 trayIcon.obj:-1: error: LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __thiscall QSystemTrayIcon::metaObject(void)const " (?metaObject@QSystemTrayIcon@@UBEPBUQMetaObject@@XZ) trayIcon.obj:-1: error: LNK2001: 无法解析的外部符号 "public: virtual void * __thiscall QSystemTrayIcon::qt_metacast(char const *)" (?qt_metacast@QSystemTrayIcon@@UAEPAXPBD@Z) trayIcon.obj:-1: error: LNK2001: 无法解析的外部符号 "public: virtual int __thiscall QSystemTrayIcon::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@QSystemTrayIcon@@UAEHW4Call@QMetaObject@@HPAPAX@Z) trayIcon.obj:-1: error: LNK2001: 无法解析的外部符号 "protected: virtual bool __thiscall QSystemTrayIcon::event(class QEvent *)" (?event@QSystemTrayIcon@@MAE_NPAVQEvent@@@Z) trayIcon.obj:-1: error: LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: virtual __thiscall QSystemTrayIcon::~QSystemTrayIcon(void)" (__imp_??1QSystemTrayIcon@@UAE@XZ),该符号在函数 "public: virtual void * __thiscall QSystemTrayIcon::`scalar deleting destructor'(unsigned int)" (??_GQSystemTrayIcon@@UAEPAXI@Z) 中被引用 debug\TPhone.exe:-1: error: LNK1120: 6 个无法解析的外部命令 现在编译总是提示这样的错误-------是什么原因?,把makefile删除重新编译还是出现这个错误,类里面函数方法都注释了,只有初始化时在构造里面有这一句话:m_trayIcon = new QSystemTrayIcon(this);
  • 打赏
  • 举报
回复
引用 9 楼 foruok 的回复:
--------
大神,再问一下我的主窗口是QQmlApplicationEngine + Window 创建的,而且界面做了许多处理,您这个使用的是QQuickView的,而且tray->setWindow()里面可以传view却不可以传engine,大神可解吗?是不是一定需要用QQuickView来创建呢
foruok 2015-05-21
  • 打赏
  • 举报
回复
窗口最小化时隐藏窗口。处理图盘图标的鼠标双击、单击之类的消息,show出你的窗口。就是这样。
foruok 2015-05-21
  • 打赏
  • 举报
回复


--------
  • 打赏
  • 举报
回复
非常苦恼
引用 5 楼 foruok 的回复:
https://github.com/foruok/stockMonitor,这是我《Qt Quick核心编程》书上的示例,可以看看。
这个网址好像打不开啊,我看书本后面也写着源代码的下载地址,好像不行哎,我已经买了您的这本书,翻找了一下,能告诉我在那一章节吗?
foruok 2015-05-21
  • 打赏
  • 举报
回复
https://github.com/foruok/stockMonitor,这是我《Qt Quick核心编程》书上的示例,可以看看。
  • 打赏
  • 举报
回复
引用 3 楼 foruok 的回复:
[quote=引用 2 楼 dell_tx 的回复:] [quote=引用 1 楼 foruok 的回复:] 窗口最小化时隐藏窗口。处理图盘图标的鼠标双击、单击之类的消息,show出你的窗口。就是这样。
我不会使用QSystemTrayIcon ,现在是窗口隐藏后就不见了,怎么让它隐藏后,在托盘显示图标,要在哪修改[/quote] 你需要调用 QSystemTrayIcon的show方法,多看帮助,Qt的帮助很强大。[/quote]
#include <QApplication>
#include <QQmlApplicationEngine>

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

    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

    return app.exec();
}
import QtQuick 2.4
import QtQuick.Controls 1.3
import QtQuick.Window 2.2
import QtQuick.Dialogs 1.2

ApplicationWindow {
    title: qsTr("Hello World")
    width: 640
    height: 480
    visible: true

    menuBar: MenuBar {
        Menu {
            title: qsTr("&File")
            MenuItem {
                text: qsTr("&Open")
                onTriggered: messageDialog.show(qsTr("Open action triggered"));
            }
            MenuItem {
                text: qsTr("E&xit")
                onTriggered: Qt.quit();
            }
        }
    }

    MainForm {
        anchors.fill: parent
        button1.onClicked: messageDialog.show(qsTr("Button 1 pressed"))
        button2.onClicked: messageDialog.show(qsTr("Button 2 pressed"))
        button3.onClicked: messageDialog.show(qsTr("Button 3 pressed"))
    }

    MessageDialog {
        id: messageDialog
        title: qsTr("May I have your attention, please?")

        function show(caption) {
            messageDialog.text = caption;
            messageDialog.open();
        }
    }
}
我现在的QSystemTrayIcon都不知道要写在哪里 使用QtQuick新建的 求指导怎么做 Qt帮助文档看过了,但是 还是不知道怎么实现,您给个例子看看吧
foruok 2015-05-21
  • 打赏
  • 举报
回复
引用 2 楼 dell_tx 的回复:
[quote=引用 1 楼 foruok 的回复:] 窗口最小化时隐藏窗口。处理图盘图标的鼠标双击、单击之类的消息,show出你的窗口。就是这样。
我不会使用QSystemTrayIcon ,现在是窗口隐藏后就不见了,怎么让它隐藏后,在托盘显示图标,要在哪修改[/quote] 你需要调用 QSystemTrayIcon的show方法,多看帮助,Qt的帮助很强大。
  • 打赏
  • 举报
回复
引用 1 楼 foruok 的回复:
窗口最小化时隐藏窗口。处理图盘图标的鼠标双击、单击之类的消息,show出你的窗口。就是这样。
我不会使用QSystemTrayIcon ,现在是窗口隐藏后就不见了,怎么让它隐藏后,在托盘显示图标,要在哪修改

16,212

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧