社区
C++ Builder
帖子详情
(简单问题)Anchors属性应该怎么动态设置???(在线等待)
Lo
2002-09-24 03:51:32
Anchors属性应该怎么动态设置???
看了半天帮助也没看到要怎么给组件的Anchors赋值。
...全文
194
3
打赏
收藏
(简单问题)Anchors属性应该怎么动态设置???(在线等待)
Anchors属性应该怎么动态设置??? 看了半天帮助也没看到要怎么给组件的Anchors赋值。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
myy
2002-09-24
打赏
举报
回复
Lo(水滴):
你好象说反了吧,ListView1->Anchors=TAnchors()<<akTop会将
ListView1->Anchors设置为{akTop}(姑且用数学中集合表示法),
原来的值被冲掉了,而ListView1->Anchors=ListView1->Anchors<<akTop,
则是真正的"加入"了akTop,比如ListView1->Anchors为{akLeft,akRight},
ListView1->Anchors=ListView1->Anchors<<akTop后,为{akLeft,akRight,akTop}不信你试试!
Lo
2002-09-24
打赏
举报
回复
应该是ListView1->Anchors=TAnchors()<<akTop;
用TPanel1->Anchors=TPanel1->Anchors<<akTop;会导致组件尺寸变小
不过还是你提示了我,谢谢
myy
2002-09-24
打赏
举报
回复
Anchors不是Set么,与TFont->Style一样吧。
TPanel1->Anchors=TPanel1->Anchors<<akTop;
在C++程序中使用QML
在C++程序中使用QML QML API是分为三个主类——QDeclarativeEngine, QdeclarativeComponent 与 QDeclarativeContext。QDeclarativeEngine 提供QML运行的环境,QdeclarativeComponent 封装了QML Documents 与QDeclarativeContext允许程序导出数据到QML组件实例。 QML还包含了API的一个方便,通过QDeclarativeView 应用程序只需要
简单
嵌入QML组件到一个新的QGraphicsView就可以了。这有许多细节将在下面讨论。QDeclarativeView 主要是用于快速成型的应用程序里。 如果你是重新改进使用QML的Qt应用程序,请参阅 整合QML到现有的Qt UI代码。 基本用法 每个应用程序至少需求一个QDeclarativeEngine。QDeclarativeEngine允许配置全局
设置
应用到所有的QML组件实例中,例如QNetworkAccessManager是用于网络通信以及永久储存的路径。如果应用程序需求在QML组件实例间需求不同的
设置
只需要多个QDeclarativeEngine。 使用QDeclarativeComponent类载入QML Documents。每个QDeclarativeComponent实例呈现单一QML文档。QDeclarativeComponent可以传递一个文档的地址或文档的原始文本内容。该文档的URL可以是本地文件系统的地址或通过QNetworkAccessManager支持的网络地址。 QML组件实例通过调用QDeclarativeComponent::create()模式来创建。在这里载入一个QML文档的示例并且从它这里创建一个对象。 QDeclarativeEngine *engine = new QDeclarativeEngine(parent); QDeclarativeComponent component(engine, QUrl::fromLocalFile(“main.qml”)); QObject *myObject = component.create(); 导出数据 QML组件是以QDeclarativeContext实例化的。context允许应用程序导出数据到该QML组件实例中。单个QDeclarativeContext 可用于一应用程序的所有实例对象或针对每个实例使用QDeclarativeContext 可以创建更为精确的控制导出数据。如果不传递一个context给QDeclarativeComponent::create()模式;那么将使用QDeclarativeEngine的root context。数据导出通过该root context对所有对象实例是有效的。
简单
数据 为了导出数据到一个QML组件实例,应用程序
设置
Context
属性
;然后由QML
属性
绑定的名称与JavaScrip访问。下面的例子显示通过QGraphicsView如何导出一个背景颜色到QML文件中: //main.cpp #include
#include
#include
int main(int argc, char *argv[]) { QApplication app(argc, argv); QDeclarativeView view; QDeclarativeContext *context = view.rootContext(); context->setContextProperty(“backgroundColor”, QColor(Qt::yellow)); view.setSource(QUrl::fromLocalFile(“main.qml”)); view.show(); return app.exec(); } //main.qml import Qt 4.7 Rectangle { width: 300 height: 300 color: backgroundColor Text {
anchor
s.centerIn: parent text: “Hello Yellow World!” } } 或者,如果你需要main.cpp不需要在QDeclarativeView显示创建的组件,你就需要使用QDeclarativeEngine::rootContext()替代创建QDeclarativeContext实例。 QDeclarativeEngine engine; QDeclarativeContext *windowContext = new QDeclarativeContext(engine.rootContext()); windowContext->setContextProperty(“backgroundColor”, QColor(Qt::yellow)); QDeclarativeComponent component(&engine, “main.qml”); QObject *window = component.create(windowContext); Context
属性
的操作像QML绑定的标准
属性
那样——在这个例子中的backgroundColor Context
属性
改变为红色;那么该组件对象实例将自动更新。注意:删除任意QDeclarativeContext的构造是创建者的事情。当window组件实例撤消时不再需要windowContext时,windowContext必须被消毁。最
简单
的方法是确保它
设置
window作为windowContext的父级。 QDeclarativeContexts 是树形结构——除了root context每个QDeclarativeContexts都有一个父级。子级QDeclarativeContexts有效的继承它们父级的context
属性
。这使应用程序分隔不同数据导出到不同的QML对象实例有更多自由性。如果QDeclarativeContext
设置
一context
属性
,同样它父级也被影响,新的context
属性
是父级的影子。如下例子中,background context
属性
是Context 1,也是root context里background context
属性
的影子。 结构化数据 context
属性
同样可用于输出结构化与写数据到QML对象。除了QVariant支持所有已经存在的类型外,QObject 派生类型可以分配给context
属性
。 QObject context
属性
允许数据结构化输出并允许QML来
设置
值。 下例创建CustomPalette对象并
设置
它作为palette context
属性
。 class CustomPalette : public QObject { Q_OBJECT Q_PROPERTY(QColor background READ background WRITE setBackground NOTIFY backgroundChanged) Q_PROPERTY(QColor text READ text WRITE setText NOTIFY textChanged) public: CustomPalette() : m_background(Qt::white), m_text(Qt::black) {} QColor background() const { return m_background; } void setBackground(const QColor &c) { if (c != m_background) { m_background = c; emit backgroundChanged(); } } QColor text() const { return m_text; } void setText(const QColor &c) { if (c != m_text) { m_text = c; emit textChanged(); } } signals: void textChanged(); void backgroundChanged(); private: QColor m_background; QColor m_text; }; int main(int argc, char *argv[]) { QApplication app(argc, argv); QDeclarativeView view; view.rootContext()->setContextProperty(“palette”, new CustomPalette); view.setSource(QUrl::fromLocalFile(“main.qml”)); view.show(); return app.exec(); } QML引用palette对象以及它的
属性
,为了
设置
背景与文本的颜色,这里是当单击窗口时,面板的文本颜色将改变成蓝色。 import Qt 4.7 Rectangle { width: 240 height: 320 color: palette.background Text {
anchor
s.centerIn: parent color: palette.text text: “Click me to change color!” } MouseArea {
anchor
s.fill: parent onClicked: { palette.text = “blue”; } } } 可以检测一个C++
属性
值——这种情况下的CustomPalette的文本
属性
改变,该
属性
必须有相应的NOTIFY信息。NOTIFY信号是
属性
值改变时将指定一个信号发射。 实现者
应该
注意的是,只有值改变时才发射信号,以防止发生死循环。访问一个绑定的
属性
,没有NOTIFY信号的话,将导致QML在运行时发出警告信息。
动态
结构化数据 如果应用程序对结构化过于
动态
编译QObject类型;那么对
动态
结构化数据可在运行时使用QDeclarativePropertyMap 类构造。 从QML调用 C++ 通过public slots输出模式或Q_INVOKABLE标记模式使它可以调用QObject派生出的类型。 C++模式同样可以有参数并且可以返回值。QML支持如下类型: •bool •unsigned int, int •float, double, qreal •QString •QUrl •QColor •QDate,QTime,QDateTime •QPoint,QPointF •QSize,QSizeF •QRect,QRectF •QVariant 下面例子演示了,当MouseArea单击时控制“Stopwatch”对象的开关。 //main.cpp class Stopwatch : public QObject { Q_OBJECT public: Stopwatch(); Q_INVOKABLE bool isRunning() const; public slots: void start(); void stop(); private: bool m_running; }; int main(int argc, char *argv[]) { QApplication app(argc, argv); QDeclarativeView view; view.rootContext()->setContextProperty(“stopwatch”, new Stopwatch); view.setSource(QUrl::fromLocalFile(“main.qml”)); view.show(); return app.exec(); } //main.qml import Qt 4.7 Rectangle { width: 300 height: 300 MouseArea {
anchor
s.fill: parent onClicked: { if (stopwatch.isRunning()) stopwatch.stop() else stopwatch.start(); } } } 值得注意的是,在这个特殊的例子里有更好的方法来达到同样的效果,在main.qml有”running”
属性
,这将会是一个非常优秀的QML代码: // main.qml import Qt 4.7 Rectangle { MouseArea {
anchor
s.fill: parent onClicked: stopwatch.running = !stopwatch.running } } 当然,它同样可以调用 functions declared in QML from C++。 网络组件 如果URL传递给QDeclarativeComponent是一网络资源或者QML文档引用一网络资源,QDeclarativeComponent要先获取网络数据;然后才可以创建对象。在这种情况下QDeclarativeComponent将有Loading status。直到组件调用QDeclarativeComponent::create()之前,应用程序将一直
等待
。 下面的例子显示如何从一个网络资源载入QML文件。在创建QDeclarativeComponent之后,它测试组件是否加载。如果是,它连接QDeclarativeComponent::statusChanged()信号,否则直接调用continueLoading()。这个测试是必要的,甚至URL都可以是远程的,只是在这种情况下要防组件是被缓存的。 MyApplication::MyApplication() { // … component = new QDeclarativeComponent(engine, QUrl(“http://www.example.com/main.qml”)); if (component->isLoading()) QObject::connect(component, SIGNAL(statusChanged(QDeclarativeComponent::Status)), this, SLOT(continueLoading())); else continueLoading(); } void MyApplication::continueLoading() { if (component->isError()) { qWarning() << component->errors(); } else { QObject *myObject = component->create(); } } Qt资源 QML的内容可以使用qrc:URL方案从Qt 资源系统载入。例如: [project/example.qrc]
main.qml
images/background.png
[project/project.pro] QT += declarative SOURCES += main.cpp RESOURCES += example.qrc [project/main.cpp] int main(int argc, char *argv[]) { QApplication app(argc, argv); QDeclarativeView view; view.setSource(QUrl(“qrc:/main.qml”)); view.show(); return app.exec(); } [project/main.qml] import Qt 4.7 Image { source: “images/background.png” } 请注意,资源系统是不能从QML直接访问的。如果主QML文件被加载作为资源,所有的文件指定在QML中做为相对路径从资源系统载入。在QML层使用资源系统是完全透明的。这也意味着,如果主QML文件没有被加载作为资源,那么从QML不能访问资源系统。 1.这里主要是介绍,如何在c++中调用QML中的函数和
设置
QML中的
属性
的
问题
2.具体代码 // UICtest.qml import Qt 4.7 Rectangle { id: mainWidget; width: 640 height: 480 function callbyc(v) { mainWidget.color = v; return "finish"; } Rectangle{ id: secondRect; x: 100; y: 20; width: 400; height: 300; Rectangle{ x: 10; y: 20; width: 30; height: 40; color: "#FF035721" Text { objectName: "NeedFindObj";
anchor
s.fill: parent; text: ""; } } } } // main.cpp #include
#include
#include
#include
#include
#include
#include
int main(int argc, char *argv[]) { QApplication a(argc, argv); QDeclarativeView qmlView; qmlView.setSource(QUrl::fromLocalFile("../UICtest/UICtest.qml")); qmlView.show(); // 获取根节点,就是 QML中 id是mainWidget的节点 QDeclarativeItem *item = qobject_cast
(qmlView.rootObject()); item->setProperty("color", QVariant("blue")); // 查找到我们需要的节点根均objectname NeedFindObj 来获得,并
设置
他的文本
属性
QDeclarativeItem *item1 = item->findChild
("NeedFindObj"); if (item1) { item1->setProperty("text", QVariant("OK")); } // 调用QML中的函数, 分别是 函数所在的对象, 函数名,返回值, 参数 QVariant returnVar; QVariant arg1 = "blue"; QMetaObject::invokeMethod(item, "callbyc", Q_RETURN_ARG(QVariant, returnVar),Q_ARG(QVariant, arg1)); qDebug(" %s",returnVar.toString().toLocal8Bit().data()); return a.exec(); } 说明: 这里的根节点是id为mainWidget的矩形元素,那么在C++中获取根节点后就可以,直接的
设置
他的
属性
了。其他
属性
也可以同样,调用指定节点内的函数是通过QMetaObject中的invokeMethod 来进行调用的。 最后所有关于QML和c++交互部分就基本写完,如果想要更多的东西,或者一些其他方法,强烈看看 http://doc.qt.nokia.com/4.7-snapshot/qtbinding.html,或者帮助文档,(究竟是不是我的文档里面没有还是怎么的)
Qml中使用mapFromItem或mapToItem代替
anchor
s
mapFromItem与mapToItem使用心得
什么是 window 对象?什么是 document 对象?
1、什么是 window 对象
简单
来说,document 是 window 的一个对象
属性
Window 对象表示浏览器中打开的窗口。 如果文档包含框架(frame 或 iframe 标签),浏览器会为 HTML 文档创建一个 window 对象,并为每个框架创建一个额外的 window 对象。 所有的全局函数和对象都属于 Window 对象的
属性
和方法。 它是一个顶层对象,而不是另一个对象的
属性
,即浏览器的窗口。 ...
QML学习笔记4-动画-曲线-分组-状态
动态
元素: 1 动画(Animations):被用于
属性
的改变, 一个动画定义了
属性
值改变的曲线,将一个
属性
值变化从一个值过渡到另一个值.动画是由一连串的目标
属性
活动定义的,平缓的曲线算法能够引发一个定义时间内
属性
的持续变化。 所有在QtQuick中的动画都由同一个计时器来控制,因此他们始终保持同步,这也是提高了动画的性能和显示效果。动画控制了
属性
的改变,也就是值的插入。这是一个基本的概念,QML是基于元素,
属性
与脚本的。每一个元素都提供了许多的
属性
, 每一个
属性
都在
等待
使用动画。动画控制了
属性
的改变,每个
W3C标准是什么,需注意哪些
问题
?
网站要通过W3C标准,需要注意以下几个
问题
: 1.XHTML 1.0 文件类别宣告的正确写法 (不可小写) A:过度标准(Transitional) http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> B:框架标准(Frameset) "http://www.w3.org/TR/xhtml1/DTD/xht
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章