小编jec*_*kal的帖子

自定义小部件的Qt样式表

我当前的项目中有几个自定义小部件.我希望将样式表应用到它们中,当我在Qt Creator中这样做时,它似乎有效.但是,在执行程序时,不使用样式表.Qt小部件的样式表正常工作.

有人有建议吗?这是一些相关的代码.

WidgetUnits.h

#ifndef WIDGETUNITS_H
#define WIDGETUNITS_H

#include <QList>

#include <QWidget>
#include <QPainter>

#include <Widgets/JECButton.h>

#include <Unit.h>
#include <Time.h>

namespace Ui
{
    class WidgetUnits;
}

class WidgetUnits : public QWidget
{
    Q_OBJECT

public:
    explicit WidgetUnits(QWidget *parent = 0);
    ~WidgetUnits();

    void setNumTimes(const int& numTimes);

public slots:
    void updatePictures(const Time* time);

protected:
    void paintEvent(QPaintEvent *event);
private:
    void checkNewQueue(const QList<QList<Unit*>*>* units);
    Ui::WidgetUnits *ui;

    const int pictureWidth;                         // The width of the Unit pictures.
    const int pictureHeight;                        // The height of the Unit …
Run Code Online (Sandbox Code Playgroud)

qt qtstylesheets

32
推荐指数
5
解决办法
2万
查看次数

Visual Studio,在监视窗口中查看变量的内存地址

我以前在监视窗口中使用的一个特殊功能是变量的内存地址.IIRC Visual Studio为C++做了这个(我知道QtCreator/Eclipse会这样做).有没有一种简单的方法可以在Visual Studio中为C#程序执行此操作?

任何帮助将不胜感激.谢谢,

JEC

c# visual-studio-2012

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

Qt Creator代码文件重构

我想知道是否有人知道使用QTCreator在我的QT项目中重构代码文件的快速简便方法?具体来说,我正在尝试组织我的源文件,并且有点痛苦,必须返回到项目文件并更改每个文件的文件路径.更不用说移动对话框类更糟糕了(项目中不包含.ui文件,但你也必须改变它们.

c++ refactoring qt-creator

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

如何在C++中重写后调用原始函数?

我用两个函数read()和write()来序列化我的大多数类.我想要做的是从子类调用基类的read/write()函数,这样我就不必多次重复序列化代码了.

例如:

class Base
{
public:
   base();
   virtual read(QDataStream&);
   virtual write(QDataStream&);
private:
   int a, b, c, d;
}

class Sub : public Base
{
public:
    Sub();
    read(QDataStream&);
    write(QDataStream&);
private:
    int e, f, g, h;
}
Run Code Online (Sandbox Code Playgroud)

所以在这个例子中,我希望代码读/写a,b,c,d来自Base.然后,Sub将调用Base :: read(QDataStream&),然后添加Sub独有的任何属性.这样我就不必为每个子类重复序列化代码(并且可能忘记这样做).

c++ qt overriding

8
推荐指数
3
解决办法
7374
查看次数

绝不会调用QAbstractItemModel data()

我正在尝试创建一个QTreeView并使用自定义模型.我把qDebug()报表在不同的地方,我已经确定,data()永远不会被调用.我该如何解决这个问题?

该模型的代码如下

#include "ModelItemNeural.h"

ModelItemNeural::ModelItemNeural(QObject *parent, NeuralNode *rootNode)
    : QAbstractItemModel(parent)
{
    this->rootNode = 0;
}

QModelIndex ModelItemNeural::index(int row, int column, const QModelIndex &parent) const
{
    // Out of bounds and null rootNode check.
    if (rootNode == 0 || row < 0 || column < 0)
    {
        return QModelIndex();
    }

    NeuralNode* parentNode = nodeFromIndex(parent);
    NeuralNode* childNode = parentNode->getInputs().value(row);

    if (childNode == 0)
    {
        return QModelIndex();
    }

    return createIndex(row, column, childNode);
}

QModelIndex ModelItemNeural::parent(const QModelIndex &child) …
Run Code Online (Sandbox Code Playgroud)

c++ qt qtreeview qabstractitemmodel

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

Qt无法创建/写入C:\

我正在编写一个Qt程序(最初是Windows 7的4.7),需要写入已安装的目录(C:\ Program Files ...).当我尝试写入"受保护"的位置(程序文件,C:\ etc)时,没有创建任何文件.但是,QFile没有给我任何错误代码(error()返回0表示它工作正常).

这是我正在使用的代码snippit无法正常工作.我将在程序中稍后关闭文件.

QApplication a(argc,argv);

// Setting plugin paths.
QStringList paths = QCoreApplication::libraryPaths();
paths.append(QCoreApplication::applicationDirPath());
QCoreApplication::setLibraryPaths(paths);



// Debug file.
QString path = QCoreApplication::applicationDirPath() + "/debug.dat";
//QFile debugFile(QCoreApplication::applicationDirPath() + "/debug.dat");
QFile debugFile("C:/debug.txt");
qDebug() << debugFile.error();
debugFile.setPermissions(QFile::WriteUser | QFile::WriteGroup | QFile::WriteOwner | QFile::WriteOther);
debugFile.open(QFile::WriteOnly);
QTextStream debugStream(&debugFile);

// Processing the arguments.
debugStream << QString("Processing Arguments\n");
Run Code Online (Sandbox Code Playgroud)

有没有人有关于如何解决这个问题的任何提示?

谢谢您的帮助,

JEC


添加清单文件是我选择解决此问题的路径.

感谢您的帮助.

qt qfile

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

QDatastream运算符>> for QList <Class*>

所以我为自定义类重载了QDatastream的>>和<<运算符.我分别制作了两个版本; 一个用于基础对象,一个用于指向对象.到目前为止,所有版本的运算符都有一个例外.指针读取操作符读取正确的数据,但未在QList <*>中正确保存.

这是一些示例代码.

QDataStream & operator <<(QDataStream &dataStream, const Faction &rhs)
{
    return rhs.write(dataStream);
}

QDataStream & operator >>(QDataStream &dataStream, Faction &rhs)
{
    return rhs.read(dataStream);
}

QDataStream & operator <<(QDataStream &dataStream, const Faction *rhs)
{
    return rhs->write(dataStream);
}

QDataStream & operator >>(QDataStream &dataStream, Faction *rhs)
{
    rhs = new Faction();
    return rhs->read(dataStream);
}

QDataStream & Faction::read(QDataStream &dataStream)
{
    QString tag;
    dataStream >> tag;

    QString classTag = QString(typeid(this).name());
    getTypeName(&classTag);
    if (tag == classTag + "Start")
    {
        while (tag != classTag …
Run Code Online (Sandbox Code Playgroud)

qt

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

Qmake处于发布和调试模式

我有一个库,我希望它根据我所处的配置(调试或发布)将自身复制到一个目录.这是我的项目文件.

#-------------------------------------------------
#
# Project created by QtCreator 2011-08-13T12:48:33
#
#-------------------------------------------------

TARGET = JECLibrary
TEMPLATE = lib

DEFINES += JECLIBRARY_LIBRARY

SOURCES += \
    JECMessageText.cpp \
    JECMessageCombo.cpp \
    JECButton.cpp

HEADERS +=\
        JECLibrary_global.h \
    JECMessageText.h \
    JECMessageCombo.h \
    JECButton.h

CONFIG(debug, debug|release)
{
    DLLDESTDIR += $$quote(../../../Jane/Jane/Build/debug)
    message("Copying to Jane Debug Directory.")
}
CONFIG(release, debug|release)
{
    DLLDESTDIR += $$quote(../../../Jane/Jane/Build/release)
    message("Copying to Jane Release Directory.")
}

FORMS += \
    JECMessageText.ui \
    JECMessageCombo.ui
Run Code Online (Sandbox Code Playgroud)

出于某种原因,调试或释放DLL被复制到两个目录而不是一个目录.因此,如果我在发布模式下运行,我会在Debug目录和release目录中获取发行版DLL.

我完全糊涂了.有人可以对此有所了解吗?谢谢

qt qmake config

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