用dmd+QtE5+Qt-5运行时
三样来写界面
.用QtE5
时,最好了解Qt
的工作原理,目标是制作足够日常任务
子集,简化到极致
.方法和类名
与QT
差不多.对新手,简单,易于组装,速度及巨大可能性
.
import qte5;
import core.runtime;int main(string[]args){if(1==LoadQt(dll.QtE5Widgets,true))return1;QApplicationapp=new QApplication(&Runtime.cArgs.argc,Runtime.cArgs.argv,1);QLabel lb =new QLabel(null);lb.setText("哈哈
").show();app.exec();return 0;
}
注意,简单的编译命令
,极致
的编译速度
,非常详细的Qt
文档.
无需安装完整版Qt5
.安装RunTime
版就够了.仅*.dll/so
.
用QtE5.QAction()--替换C++元编译器
QAction
自身具有很多属性.在(qte5widgets.h)
中继承它并定义了一组现成插槽(slot)
.并引入被调函数地址
,即在此位置
激活插槽
时,调用函数,的属性.每个QAction
存储一组槽和处理器
的地址.
slot
只是进一步调用地址存储在QAction
中的extern (C)connect()
,
Qt===>Slot{QAction.QtE5}===>extern(C)OurFunction()===>
类方法
槽
必须记住实例地址,用构造
来保存实例地址.
不仅仅传方法
,还要传实例地址
.
QWidget win=QWidget(...);
win.savethis(&win);
利用该信息:
QAction acHelp = new QAction(&handler,aThis());
处理器包含以下结构:
extern (C) void acFun1(cast(classname*)uk,...){(*uk).MethodName(...);
}
只是临时
函数,因为无元编译器
.缺点是预定义时隙
集合有限的.不能提前确定
所有参数选项.
QtE5
中另外定义了参数数
的有趣插槽.
QAction actNtest = new QAction(HandlerAdd,InstanceAdd,n);
现在绑定信号到"slotN()
“而非”slot()
".允许同一处理器
按参数传递
内容,调用不同QAction
.要处理许多相同按钮
时,非常有用.
插槽名
是预定义的,可在参数中使用连接()
,通过参数按串连接,插槽类型:
串表示 | 意思 |
---|
"Slot()" | 简单插槽. |
"SlotN()" | 插槽有个附加 参数. |
"Slot_Bool(bool)" | 槽从bool 信号中抛参数 |
"Slot_Int(int)" | 槽整 . |
注意,extern(C)
是必须的.但Qt
信号可以有事件
参数,怎么办?有个QEvent
实例参数(指针).可在此查看预定义
插槽名.
如connect()
参数中,写上"Slot_int(int)"
,则激活
插槽.从信号中取整
,并按该参
调用函数
.
像指挥棒一样,传递信号中参数给处理器.
可在不用C++
,就定义具不同参数集
的插槽.一组十个不同
选项几乎涵盖
了所有信号.