当前位置: 技术问答>linux和unix
xwindows里怎么向一个窗口发出event
来源: 互联网 发布时间:2015-09-01
本文导语: 就是类似于window中的SendMessage这样的函数,在xwindows下有没有对应的 另外,关于xwindows开发方面的资料在哪里找啊,网上好像都只有一些零散的文章 | 同样关注, 寻找志同道合的人一起学习Xwi...
就是类似于window中的SendMessage这样的函数,在xwindows下有没有对应的
另外,关于xwindows开发方面的资料在哪里找啊,网上好像都只有一些零散的文章
另外,关于xwindows开发方面的资料在哪里找啊,网上好像都只有一些零散的文章
|
同样关注, 寻找志同道合的人一起学习Xwindow ,qq: 9117569 email :li_gh@mail.china.com
|
你可以在www.gtk.org/www.gnome.org去下载源码,在源里有相应的很多实例。
我可以推荐一种方法:就是用LINUX下C开发的信号函数支持你自定义消息。
我可以推荐一种方法:就是用LINUX下C开发的信号函数支持你自定义消息。
|
在利用QT Designer设计界面时候可以使用QT库中的slot函数传递。
|
linux下开发一般用qt或者gtk(包括gtk+,gtk--或者叫gtkmm)库,一般都用c/c++语言
qt库在linux下的消息是通过:信号槽机制来处理的,gtkmm比较晚才出,对消息的封装比较好,具体可以参考相关文章,qt库的消息通知如下代码:
//用qt库的例子
#include
#include
#include
int main( int argc, char **argv )
{
QApplication a( argc, argv );
QPushButton quit( "Quit", 0 );
quit.resize( 75, 30 );
quit.setFont( QFont( "Times", 18, QFont::Bold ) );
QObject::connect( &quit, SIGNAL(clicked()), &a, SLOT(quit()) );
a.setMainWidget( &quit );
quit.show();
return a.exec();
}
//QObject::connect( &quit, SIGNAL(clicked()), &a, SLOT(quit()) );
//这里quit的clicked()信号和a的quit()槽连接起来了,所以当这个按钮被按下的时候,
//这个程序就退出了。
-----------------------------------------------------------------------------
有空交流了~_~ qq:1040745
qt库在linux下的消息是通过:信号槽机制来处理的,gtkmm比较晚才出,对消息的封装比较好,具体可以参考相关文章,qt库的消息通知如下代码:
//用qt库的例子
#include
#include
#include
int main( int argc, char **argv )
{
QApplication a( argc, argv );
QPushButton quit( "Quit", 0 );
quit.resize( 75, 30 );
quit.setFont( QFont( "Times", 18, QFont::Bold ) );
QObject::connect( &quit, SIGNAL(clicked()), &a, SLOT(quit()) );
a.setMainWidget( &quit );
quit.show();
return a.exec();
}
//QObject::connect( &quit, SIGNAL(clicked()), &a, SLOT(quit()) );
//这里quit的clicked()信号和a的quit()槽连接起来了,所以当这个按钮被按下的时候,
//这个程序就退出了。
-----------------------------------------------------------------------------
有空交流了~_~ qq:1040745
|
KDE——X Window的一种,就是基于Qt库写出来的。所以Qt库就是你所指的X Window的基础类库(KDE的库应该是再封装了Qt库的吧?)。Qt库有你所指的消息映射功能。
在MFC里头,基础类对象有一些消息处理响应特定的事件——使用postMessage和sendMessage也可以人工触发。
在Qt里头,“基础类”对象有一些“槽”处理特定的信号——也可以使用emit人工触发。任何类(只要包含Q_OBJECT)都会满足信号-槽机制。可以将普通函数定义为信号,或者槽。槽还可以作为信号再触发另外的槽。当然,类似鼠标点击之类的事件全都由类事先定义成为了相应的信号了。
感觉Qt的信号槽机制和MFC的消息映射机制有很多类似的地方,但是Qt更灵活方便。当然,如果读Qt开发的官方文档《C++ GUI programming with Qt3》;你就可以知道Qt的开发者原来就是两个VC的程序员。因此很多MFC的类,将开头的C换成Q,其用法基本上都差不多。比如MFC里有CString、CMessageBox;Qt下面就有QString、QMessageBox。
Qt开发者的初衷就是要写一个真正跨平台的类库。他们做到了,Qt不仅支持Unix/Linux/Mac/Windows,甚至连ucLinux都支持——csdn上搜索的一个文档,作者称QTe甚至是Qt的母集。MFC的功能有多大我们知道,因此Qt的功能有多大我们就不难想象了。
Qt从95年开始真正意义上被人使用,已经得到了巨大的发展。KDE的成功,成就了Qt;而目前X Window
的不足,以及跨平台软件的空白,将会成就更多的人。
好像Java也是跨平台的吧,没接触过,不是狠清楚。然而Qt的编译是兼容VC、C++ Builder、G++的,应该比起JBuilder还是要方便一点吧?
//学习Qt也没有多久,以上观点可能存在不少错误或者片面的地方。欢迎回帖指正。
在MFC里头,基础类对象有一些消息处理响应特定的事件——使用postMessage和sendMessage也可以人工触发。
在Qt里头,“基础类”对象有一些“槽”处理特定的信号——也可以使用emit人工触发。任何类(只要包含Q_OBJECT)都会满足信号-槽机制。可以将普通函数定义为信号,或者槽。槽还可以作为信号再触发另外的槽。当然,类似鼠标点击之类的事件全都由类事先定义成为了相应的信号了。
感觉Qt的信号槽机制和MFC的消息映射机制有很多类似的地方,但是Qt更灵活方便。当然,如果读Qt开发的官方文档《C++ GUI programming with Qt3》;你就可以知道Qt的开发者原来就是两个VC的程序员。因此很多MFC的类,将开头的C换成Q,其用法基本上都差不多。比如MFC里有CString、CMessageBox;Qt下面就有QString、QMessageBox。
Qt开发者的初衷就是要写一个真正跨平台的类库。他们做到了,Qt不仅支持Unix/Linux/Mac/Windows,甚至连ucLinux都支持——csdn上搜索的一个文档,作者称QTe甚至是Qt的母集。MFC的功能有多大我们知道,因此Qt的功能有多大我们就不难想象了。
Qt从95年开始真正意义上被人使用,已经得到了巨大的发展。KDE的成功,成就了Qt;而目前X Window
的不足,以及跨平台软件的空白,将会成就更多的人。
好像Java也是跨平台的吧,没接触过,不是狠清楚。然而Qt的编译是兼容VC、C++ Builder、G++的,应该比起JBuilder还是要方便一点吧?
//学习Qt也没有多久,以上观点可能存在不少错误或者片面的地方。欢迎回帖指正。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。