草庐IT

c++ - 从 QWidget 中获取对象名称(从 Qt Designer 中可以看出)?

我想在我的Qt应用程序中禁用除了选定的一组小部件之外的所有小部件。我想做的是使用findChildren迭代mainWindow的所有子项,并使用setEnabled(false)禁用除“myTable”之外的所有结果小部件。QListallWidgets=mainWindow->findChildren("");QList::iteratorit;for(it=allWidgets.begin();it!=allWidgets.end();it++){if((*it)->objectName()!="myTable")//here,objectNameisnotworking!!{(

c++ - 使用 QObject 属性的指针

自从我学习Qt以来,我一直对以下事实感到困惑:在我阅读的文档和书籍中,它们使用指针来表示作为QObject子类实例的属性,例如小部件。我知道QObjects会删除它们的子对象,但除非确实有必要,否则我们不应该避免使用指针吗?这是一个我不使用指针的工作示例:Widget.h文件:#include#include#includeclassWidget:publicQWidget{Q_OBJECTpublic:Widget(QWidget*parent=0);publicslots:voidchange(int);private:QSliderm_slider;QLabelm_label;Q

c++ - 将 QObject 类公开到 qml 时,在 Qt 中管理内存的正确方法?

我使用C++来编写我的大部分程序逻辑。我喜欢将C++类公开到QML中,以便QML可以使用JS来完成许多复杂的工作。然而,问题来了:如果C++函数返回一个QObject*Q_INVOKABLEQObject*parseJson(constQString&someArguments){returnnewSomeClassExtendsQObject(someArguments);}然后分配给JS变量并使用varresult=exposingCppObj.parseJson("I'mArguments");result.someMemberFunction(...);.....如果我用del

c++ - 将指向成员函数的指针作为返回值传递给 QObject::connect()

出于设计原因,我需要想出一种方法来调用QObject::connect(),其中函数指针作为函数调用的返回值传入。即,不是使用原始语法connect(sender,&Sender::valueChanged,receiver,&Receiver::updateValue);,我必须执行如下操作://inmain.cppSENDER*sender=newSENDER;RECEIVER*receiver=newRECEIVER;connect(sender,sender->get_func(),receiver,receiver->get_func());其中SENDER和RECEIVER

c++ - 将 QObject 用作​​类成员并将该成员用作连接的上下文是否安全?

我有一个“普通”(非qt派生)类。它正在获取传递给它的QObject引用。在此类中,我想将输入的QObject信号与lambda连接起来。到目前为止,一切正常,除非我的类的对象在传入QObject之前被销毁。来自QObject的信号现在指向一个不再存在的lambda。通常的做法是我的类继承自QObject,并将this作为上下文传递给connect。当我的对象死亡时,连接将被Qt代码自动销毁。解决这个问题的另一种方法是保存连接的返回结果,一个QMetaObject::Connection然后在我的类调用的析构函数中QObject::disconnect(resultOfConnect)

c++ - QML:自定义 QObject 类型错误

我正在QML中尝试一些东西,试图让两者更容易无缝地合并;准确地说,我正在尝试将具有结构化数据的对象链接到QML。我有以下设置:主要.cpp:#include#include#include#include"dataobject.h"intmain(intargc,char*argv[]){QApplicationapp(argc,argv);qmlRegisterType("DO",1,0,"DataObject");QQmlApplicationEngineengine;engine.load(QUrl(QStringLiteral("qrc:///main.qml")));retu

c++ - 在匿名命名空间中定义 QObject 派生类?

我正在使用Qt5.7(C++)。在一个类的cpp文件中,我使用匿名命名空间来创建一个我将仅在该文件中使用的类(一些实用程序)。但是,如果实用程序类派生自Qt类,我会遇到链接错误。我认为问题出在Q_OBJECT宏上,如果我不添加它,我就不会收到错误。但是在任何Qt派生类中都必须/推荐使用Q_OBJECT宏。我怎样才能避免这个问题?是否有任何其他方法来获得具有文件范围的实用程序类?显示错误的简单示例:类CMyClass使用派生自QWidget的实用程序类(名为CUtility)。谢谢。CMyClass.hclassCMyClass{public:CMyClass();voidsomeMet

c++ - 在 visual studio 2010 中为新的 QOBJECT 文件生成 MOC

我使用qmake创建了一个项目,它自动为直接或间接继承QObject的类生成moc文件。但是,如果我添加一个继承QObject的新类,则QT插件在构建过程中不会生成MOC文件。我应该调整哪些设置以便每次添加新的QObject文件时都可以自动执行此操作? 最佳答案 如果您的自定义类没有自动moc'ed,您可能忘记在类声明中添加Q_OBJECT宏,或者在多重继承的情况下将QObject作为第一个继承的类(类的顺序您的派生类继承事项)。如果不是您的情况,您可能需要阅读以下内容:http://truth2.wordpress.com/201

c++ - Q_INVOKABLE 是否需要在 Qt5 中从 QML 调用公共(public) QObject 函数?

我刚刚意识到我几乎可以调用公开给QML的对象的任何函数。现在我对Q_INVOKABLE很好奇。Qt5docs状态:[...]anyQMLcodecanaccessthefollowingmembersofaninstanceofaQObject-derivedclass:PropertiesMethods(providingtheyarepublicslotsorflaggedwithQ_INVOKABLE)SignalsSinceQt5(在C++中)我可以像槽一样调用QObject的任何公共(public)函数,即我不必将它们声明为“公共(public)槽”。这是否意味着我可以从QM

c++ - 调用 moveToThread() 不会将 QObject 移动到另一个线程。

设functionClass是从QObject派生的类。在我的QMainWindow类(尚未启动任何其他线程)的类构造函数中,我有以下代码:QThreadworkThread;functionClass*functionClassObj=newfunctionClass;coutthread()->currentThreadId()moveToThread(&workThread);coutthread()->currentThreadId()如果我调用moveToThread(),为什么currentThreadId()函数打印相同的内容? 最佳答案