我当前的项目中有几个自定义小部件.我希望将样式表应用到它们中,当我在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) 我以前在监视窗口中使用的一个特殊功能是变量的内存地址.IIRC Visual Studio为C++做了这个(我知道QtCreator/Eclipse会这样做).有没有一种简单的方法可以在Visual Studio中为C#程序执行此操作?
任何帮助将不胜感激.谢谢,
JEC
我想知道是否有人知道使用QTCreator在我的QT项目中重构代码文件的快速简便方法?具体来说,我正在尝试组织我的源文件,并且有点痛苦,必须返回到项目文件并更改每个文件的文件路径.更不用说移动对话框类更糟糕了(项目中不包含.ui文件,但你也必须改变它们.
我用两个函数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独有的任何属性.这样我就不必为每个子类重复序列化代码(并且可能忘记这样做).
我正在尝试创建一个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) 我正在编写一个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
添加清单文件是我选择解决此问题的路径.
感谢您的帮助.
所以我为自定义类重载了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) 我有一个库,我希望它根据我所处的配置(调试或发布)将自身复制到一个目录.这是我的项目文件.
#-------------------------------------------------
#
# 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 ×6
c++ ×3
c# ×1
config ×1
overriding ×1
qfile ×1
qmake ×1
qt-creator ×1
qtreeview ×1
refactoring ×1