QT 求助

syhhl007 2009-11-10 12:50:02
1.点击最小化按钮的事件是什么?
我想重写最小化的事件,实现点击最小化按钮后显示为系统托盘,我先用event->ignore()处理好像不行。

2.QTextEdit里如何高亮光标所在的一整行?
...全文
394 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
yb0824 2009-11-11
  • 打赏
  • 举报
回复
http://nanzhuotong.blogspot.com/2005/08/qdialog.html
yb0824 2009-11-11
  • 打赏
  • 举报
回复
google上查的,呵呵
syhhl007 2009-11-11
  • 打赏
  • 举报
回复
的确有效,高手啊~~~
请问你是怎么查的啊,有方法嘛?
yb0824 2009-11-10
  • 打赏
  • 举报
回复
QApplication 对象调用setQuitOnLastWindowClosed( false );
yb0824 2009-11-10
  • 打赏
  • 举报
回复
等高手来了~~~
syhhl007 2009-11-10
  • 打赏
  • 举报
回复
请问这个如何解决~~

void Alarm::closeEvent(QCloseEvent *event)
{
int r=QMessageBox::information(0,"Quit",tr("确定退出?"),QMessageBox::Yes | QMessageBox::No );
if(r==QMessageBox::Yes)
{
save();
trayIcon->hide();
}
else if(r==QMessageBox::No)
{
trayIcon->show();
hide();
event->ignore();//当在只显示托盘图标的情况下,点击NO后,程序就自动结束了。可能是因为messagebox窗口关闭后会导致窗口结束。不知道如何修改。
}
}
}

如果主窗口是显示的时候(不是只有系统图盘图标情况下)点击NO后不会关闭窗口的(event->ignore()实现了),但如果只显示托盘图标的情况下就实现不了
yb0824 2009-11-10
  • 打赏
  • 举报
回复
qt 我也刚接触,很多东西都搞不清楚
Qt::DirectConnection 好像才是立即执行,Qt::QueuedConnection是放到消息队列,
syhhl007 2009-11-10
  • 打赏
  • 举报
回复
谢谢楼上的,这个可以实现最小化到系统托盘

Qt::QueuedConnection这个好像是等候消息发出成功。
请问为什么要这么做啊?
yb0824 2009-11-10
  • 打赏
  • 举报
回复
试下呢
connect(this, SIGNAL(mySignal(), this, SLOT(hide()), Qt::QueuedConnection);

void Alarm::changeEvent(QEvent *event)
{
if (event->type() == QEvent::WindowStateChange)
{
if (isMinimized())
{
emit mySignal();
event->ignore();
}
}
syhhl007 2009-11-10
  • 打赏
  • 举报
回复
貌似只有当主窗口是显示的时候event->ignore()才有效。
当只显示托盘图标时,主窗口时隐藏的,所以按NO后messagebox消失,程序也就结束了。
syhhl007 2009-11-10
  • 打赏
  • 举报
回复
我把代码修改如下,但并没有预期的效果,请看我的注释
void Alarm::changeEvent(QEvent *event)
{
if (event->type() == QEvent::WindowStateChange)
{
if (isMinimized())
{
trayIcon->show();
hide();//点击最小化后任务栏上仍然有程序的窗口图标,但由于hide了,所以点击窗口图标后看到的是白框
event->ignore();
}
}


void Alarm::closeEvent(QCloseEvent *event)
{
int r=QMessageBox::information(0,"Quit",tr("确定退出?"),QMessageBox::Yes | QMessageBox::No );
if(r==QMessageBox::Yes)
{
save();
trayIcon->hide();
}
else if(r==QMessageBox::No)
{
trayIcon->show();
hide();
event->ignore();//当在只显示托盘图标的情况下,点击NO后,程序就自动结束了。可能是因为messagebox窗口关闭后会导致窗口结束。不知道如何修改。
}
}
}

如果主窗口是显示的时候(不是只有系统图盘图标情况下)点击NO后不会关闭窗口的(event->ignore()实现了),但如果只显示托盘图标的情况下就实现不了。
Michael_Xie 2009-11-10
  • 打赏
  • 举报
回复
试试这个看看
void MainWindow::changeEvent(QEvent *event)
{
if (event->type() == QEvent::WindowStateChange)
{
if (isMinimized())
{
//...
}
}
QMainWindow::changeEvent(event);
}
yb0824 2009-11-10
  • 打赏
  • 举报
回复
http://lists.trolltech.com/qt-interest/2008-01/thread00238-0.html
软件名称:GUI Design Studio V2.0.47.0 汉化版 官方主页:http://www.carettasoftware.com 原版下载:(不需要) 运行环境:Win 9x/NT/2000/XP 软件性质:共享 汉化文件:GUIDesignStudio_R047_Setup.EXE 汉化作者:李俊富 汉化日期:2006-08-01 【软件简介】 GUI Design Studio 是一款可不须经由任何编制程序或 scripting 便可迅速地创造出 Microsoft Windows 图形用户界面设计的软件。是软件规划设计及开发的一款不可多得的辅助工具。强烈推荐! 【致谢】 本人还是个汉化初哥,这款软件采用了国外破解网站下载的破解主程序。由于脱壳后资源文件重建有问题,经PASSOLO 6汉化后程序无法正常运行,后在“Windows 汉化技术”论坛求助,在论坛的兄弟姐妹们的帮助下问题得以解决,终于推出本汉化版。 对于 乾、CxLrb、决斗、东东5712 等大侠的帮助表示感谢,特别感谢 cao_cong 版主帮助修复主程序的资源文件! 【备注】 本软件汉化主要目的是自用,加之练手,所以软件中肯定存在汉化翻译问题忘勿见笑。虽然本着尽量汉化的原则但快速指南(What's this)还是没有汉化,主要是汉化工作量比较大和汉化后调整显示美观比较耗时,本人手中还有一个软件开发项目急需完成,所以该部分工作就请见谅。由于涉及软件设计,里面的许多专业术语(如控件名称)的中文翻译(平时都用英语表示,开发工具帮助文档中大部分也是英文名称)还望大家指正。
中国象棋的C++代码 #include "chess_zn.h" QTcpSocket * Chess_ZN::client = new QTcpSocket; QUndoStack * Chess_ZN::undoStack = new QUndoStack(); int Chess_ZN::second = 120; bool Chess_ZN::isTurn = false; Chess_ZN::Chess_ZN(QWidget *parent) : QWidget(parent) { init(); initElse(); } void Chess_ZN::initElse(){ treeitem = 1; timer=new QTimer; portmap=0; isConn = true; start = false; isTimer = false; isSearch = false; connect(timer,SIGNAL(timeout()),this,SLOT(stopWatch())); connect(wigettree[1],SIGNAL(itemClicked(QTreeWidgetItem*,int)),this,SLOT(getInfo(QTreeWidgetItem*))); connect(wigettree[0],SIGNAL(itemClicked(QTreeWidgetItem*,int)),this,SLOT(connectToHost_PK(QTreeWidgetItem*))); connect(client,SIGNAL(connected()),this,SLOT(connected())); //连接一旦断开 connect(client,SIGNAL(error(QAbstractSocket::SocketError)),this,SLOT(error(QAbstractSocket::SocketError ))); connect(client,SIGNAL(readyRead()),this,SLOT(readyRead())); peer = new PeerManager(this); peer->setServerPort(10001); items=wigettree[1]->currentItem(); item_pk=wigettree[0]->currentItem(); item_pk_info=wigettree[0]->currentItem(); connect(undoStack, SIGNAL(canUndoChanged(bool)),action2[8], SLOT(setEnabled(bool))); connect(undoStack, SIGNAL(canUndoChanged(bool)),action2[9], SLOT(setEnabled(bool))); connect(undoStack, SIGNAL(canUndoChanged(bool)),action2[10], SLOT(setEnabled(bool))); connect(undoStack, SIGNAL(canUndoChanged(bool)),action2[11], SLOT(setEnabled(bool))); connect(undoStack, SIGNAL(canUndoChanged(bool)),button[0], SLOT(setEnabled(bool))); connect(undoStack, SIGNAL(canUndoChanged(bool)),button[1], SLOT(setEnabled(bool))); connect(undoStack, SIGNAL(canUndoChanged(bool)),button[2], SLOT(setEnabled(bool))); connect(undoStack, SIGNAL(canUndoChanged(bool)),button[3], SLOT(setEnabled(bool))); timer->start(1000); createUndoView(); isChoose = true; tableeditor=new TableEditor("users"); } void Chess_ZN::createUndoView() { undoVie

16,212

社区成员

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

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