DCOP can be used to automate applications and access non-common features
// hierarchy virtual int childCount() const = 0; virtual int indexOfChild(const QAccessibleInterface *) const = 0; virtual int childAt(int x, int y) const = 0; // relations virtual int relationTo(int child, const QAccessibleInterface *other, int otherChild) const = 0; // navigation virtual int navigate(Relation relation, int index, QAccessibleInterface **iface) const = 0; // properties and state virtual QString text(Text t, int child) const = 0; virtual QRect rect(int child) const = 0; virtual Role role(int child) const = 0; virtual int state(int child) const = 0; // action virtual int userActionCount(int child) const = 0; virtual QString actionText(int action, Text t, int child) const = 0; virtual bool doAction(int action, int child, const QVariantList ¶ms = QVariantList()) = 0;
class AccessibleFactory : public QAccessiblePlugin
{
public:
AccessibleFactory() {}
QStringList keys() const;
QAccessibleInterface *create(const QString &classname, QObject *object);
};
QStringList AccessibleFactory::keys() const
{
QStringList list;
list << "MyWidget1" << "MyWidget2"
return list;
}
QAccessibleInterface *AccessibleFactory::create(const QString &classname, QObject *object)
{
if (classname == "MyWidget1")
return new MyWidget1Iface(object);
if (classname == "MyWidget2")
return new MyWidget2Iface(object);
return 0;
}
Q_EXPORT_PLUGIN(AccessibleFactory)
This screenshot shows a Qt application in at-poke.