zoukankan      html  css  js  c++  java
  • FPC and Qt

    Introduction

    There are a number of Qt bindings available:

    Qt3

    A QtC based binding by Theo

    Another QtC based binding by Andreas

    The first one aims on linux/unix users while the second one is for win32.

    Qt/Embedded

    The FPC arm port and this Qt/E binding allow graphical programming on devices such as the Zaurus

    Qt4

    More recently a small Qt4 Binding is available. It does not depend on the obsolete QtC library. The Qt4 binding page will provide more information on how the binding works and how to use it.

    How it works

    FPC still can't use C++ classes natively so these interface units use the same scheme as e.g. the official C interface to Qt does: there are wrapper procedures written which export an procedural interface. This procedural interface is wrapped by an object pascal interface again to make usage easier.

    This might sound like an huge overhead but these wrapper are mainly necessary to hide name mangling differences so there shouldn't be a noticable speed decrease in real world applications.

    Example

    This piece of code is taken from the second package mentioned above.

     var
       app: QApplicationH;
       btn: QPushButtonH;
     begin
       // create static ( interfaced handled ) QApplicationH
       app := NewQApplicationH(ArgCount, ArgValues).get;
       // due to a bug in fpc 1.9.5 the WideString helper methods with default parameter are disabled
       //btn := NewQPushButtonH('Quit', nil).get;
       btn := NewQPushButtonH(qs('Quit').get, nil, nil).get;
       btn.setGeometry(100, 100, 300, 300);
       btn.show;
       // override the virtual eventFilter method of btn
       btn.OverrideHook.eventFilter := @TTest.MyEventFilter;
       // and install the btn as it's own eventFilter
       btn.installEventFilter(btn);
       // connect Qt signal to Qt slot
       QObjectH.connect(btn, SIGNAL('clicked()'), app, SLOT('quit()'));
       ...

    If you know how Qt is used in C++, you can see that there is not much difference.

  • 相关阅读:
    linux之 awk
    linux之 sed命令
    HBase源码分析之WAL
    oracle之 单实例监听修改端口
    oracle之 ORA-12557: TNS: 协议适配器不可加载
    oracle之 反向键索引
    oracle之 AWR固定基线
    oracle之 如何 dump logfile
    oracle 之 CLUSTER_INTERCONNECTS is not set to the recommended value
    oracle之 变更OS时间对数据库的影响
  • 原文地址:https://www.cnblogs.com/h2zZhou/p/10179430.html
Copyright © 2011-2022 走看看