小编Mic*_*CMS的帖子

在ListView中使用QAbstractListModel

我是Qt的新手,所以请耐心等待.

我已成功设法从StringList和Object的QList填充ListView*

我现在正在努力的是使用在C++中定义的派生QAbstractListModel的类在QML中填充ListView.

这是我的CPP类的原型:

class MessageListEntryModel : public QAbstractListModel
{

Q_OBJECT
public:

enum eMLERoleTypes
{
    MLERT_MSG = Qt::UserRole+1,
    MLERT_COLOR
};

                                MessageListEntryModel(QObject* parent=0);
        virtual                 ~MessageListEntryModel();

        void                    AddEntry(QString aMessage, QColor aColor);

        // pure virtuals implementations
        QVariant                data(const QModelIndex &index, int role = Qt::DisplayRole) const;
        int                     rowCount(const QModelIndex &parent = QModelIndex()) const ;
        int                     columnCount(const QModelIndex &parent = QModelIndex()) const ;
        QModelIndex             index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
        QModelIndex             parent(const QModelIndex &child) const ;

        QHash<int,QByteArray>   roleNames();
private:
 QList<MessageEntry*> m_vpMessages; …
Run Code Online (Sandbox Code Playgroud)

qt listview qabstractlistmodel qt5 qtquick2

7
推荐指数
1
解决办法
1万
查看次数

const_cast(这)性能命中

据我所知,在类中创建常量函数对于读/写编译器优化很有用.

类中的常量函数意味着类成员在执行函数期间将保持不变.但是,你可以通过const转换隐式参数来绕过这个(ofc这是一个非常糟糕的做法).

我的问题如下:

以下代码可能导致哪些陷阱(特别是在与线程同步无关的性能方面)?

 int myClass::getSomething() const
 {
     myClass* writableThis = const_cast<myClass*>(this);
     writableThis->m_nMemberInt++;
     ...
     return m_nSomeOtherUnchangedMember;
 }
Run Code Online (Sandbox Code Playgroud)

另一个相关问题:

行为编译器/ platform/os是否具体?

我还非常感谢有人能够在编译/执行这样的代码时解释引擎盖下的魔法(我推测CPU正在基于函数是const的事实进行无序优化,并且在实际执行期间不尊重这一点应该有一些副作用).

编辑:

感谢您为我澄清这一点.经过进一步的研究,所有收到的答案都是正确的,但我只接受一个:).

关于仅用于语法核心的const限定符,我相信这个答案是正确和错误的,说明这个(imho)的正确方法是它主要用于语法核心(在非常有限的场景中它可以产生不同/更好的代码).参考文献:SO相关问题,相关文章

c++ this const-cast

1
推荐指数
1
解决办法
1394
查看次数

使用Qt Creator制作:无需制作目标

使用QT Creator我有一个项目(让我们称之为Proj A),它依赖于静态链接项目(让我们称之为Proj B).

Proj A包含Proj B所需的一些头文件.

在Proj BI中,删除了一个名为"SomeHeader.h"的头文件,该文件由Proj A中的"MyClass.cpp"使用,并将描述等移到另一个头中.

当然,在Proj AI的"MyClass.h"中删除了旧的include并将其替换为新的.

编译时我得到以下错误(这真让我感到困惑):

make:***没有规则来制作'MyClass.o'所需的目标'SomeHeader.h'.

我搜索了编译输出,.h,.cpp文件,.pro文件和'SomeHeader'在任何地方都找不到.

我已经清理了项目并重建了,但仍然没有.

我猜QT Creator正在制作一些在某种程度上变成永久性的临时makefile.

那我接下来该尝试什么呢?

qt qmake compilation qt-creator

0
推荐指数
1
解决办法
6938
查看次数