小编Don*_*alo的帖子

将外部库添加到Qt Creator项目中

如何将外部库添加到由Qt Creator RC1(版本0.9.2)构建的项目中?例如,EnumProcesses()需要Psapi.lib在要构建的项目中添加win32函数.

c++ winapi qt qt-creator

106
推荐指数
6
解决办法
21万
查看次数

Q_OBJECT抛出'未定义的引用vtable'错误

我在Windows 7 Ultimate 32位上使用Qt Creator 2.0.1和Qt 4.7.0(32位).

请考虑以下代码,这是产生错误的最小代码:

class T : public QObject, public QGraphicsItem
{
    Q_OBJECT

public:
    T() {}

    QRectF      boundingRect() const {return QRectF();}
    void        paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
                      QWidget *widget) {}
};

int main()
{
    T t;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码片段导致以下链接器错误:

在函数"T"中:

未定义引用`vtable for T'

未定义引用`vtable for T'

在函数`~T'中:

未定义引用`vtable for T'

未定义引用`vtable for T'

如果我注释掉包含的行Q_OBJECT,它编译得很好.我需要信号和插槽,QGraphicsItem所以我需要Q_OBJECT.

代码有什么问题?谢谢.

c++ qt linker-errors vtable

63
推荐指数
4
解决办法
6万
查看次数

所有的java小程序都去了哪里?

当java年轻时,人们对编写applet感到兴奋.他们很酷很受欢迎,有一段时间了.现在,我再也见不到他们了.相反,我们有flash,javascript和许多其他网络应用程序构建技术.

为什么站点不再使用java applet?

我也很好奇:从历史上看,为什么你认为这发生了?为了让Java applet保持活力,可以做些什么呢?

java applet

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

QObject:无法为位于不同线程中的父级创建子级

我在Windows 7旗舰版下使用Qt 4.6.0(32位).请考虑以下事项QThread:

接口

class ResultThread : public QThread
{
Q_OBJECT

    QString _post_data;
    QNetworkAccessManager _net_acc_mgr;

signals:
    void onFinished(QNetworkReply* net_reply);

private slots:
    void onReplyFinished(QNetworkReply* net_reply);

public:
    ResultThread();

    void run();
    void setPostData(const QString& post_data);
};
Run Code Online (Sandbox Code Playgroud)

履行

ResultThread::ResultThread() : _net_acc_mgr(this)
{
    connect(&_net_acc_mgr, SIGNAL(finished(QNetworkReply*)),
            this, SLOT(onReplyFinished(QNetworkReply*)));
}

void ResultThread::onReplyFinished(QNetworkReply* net_reply)
{
    emit onFinished(net_reply);
}

void ResultThread::setPostData(const QString& post_data)
{
    _post_data = post_data;
}

void ResultThread::run()
{
    _net_acc_mgr.post(QNetworkRequest(QUrl("http://[omitted]")),
                      QByteArray(_post_data.toStdString().c_str()));
}
Run Code Online (Sandbox Code Playgroud)

每当_net_acc_mgr.post()执行时ResultThread::run(),我在Qt Creator中获得以下应用程序输出:

QObject:无法为位于不同线程中的父级创建子级.

(Parent是QNetworkAccessManager(0x22fe58),父线程是QThread(0x9284190),当前线程是ResultThread(0x22fe48)

这是什么意思?怎么解决?

c++ qt

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

如何从QGraphicsScene/QGraphicsView创建图像文件?

给定a QGraphicsScene,或者QGraphicsView,是否可以创建图像文件(最好是PNG或JPG)?如果有,怎么样?

c++ graphics qt image

23
推荐指数
3
解决办法
2万
查看次数

功能模板专业化

阅读本文时,我对以下示例感到困惑:

// Example 2: Explicit specialization 
// 
template<class T> // (a) a base template 
void f( T );

template<class T> // (b) a second base template, overloads (a) 
void f( T* );     //     (function templates can't be partially 
                  //     specialized; they overload instead)

template<>        // (c) explicit specialization of (b) 
void f<>(int*);

// ...

int *p; 
f( p );           // calls (c)
Run Code Online (Sandbox Code Playgroud)

在这里,(c)是一个明确的专业化(b).

// Example 3: The Dimov/Abrahams Example 
// 
template<class T> // (a) …
Run Code Online (Sandbox Code Playgroud)

c++ templates

13
推荐指数
3
解决办法
1759
查看次数

Qt Creator中相关文件的自动复制

我使用Qt Creator 2.2.1和Qt 4.7.4(32位)构建了一个程序,其输出是可执行文件.使用DependencyWalker打开exe,它显示exe使用以下DLL:

  • KERNEL32.DLL
  • MSVCRT.DLL
  • MINGWM10.DLL
  • LIBGCC_S_DW2-1.DLL
  • QTCORE4.DLL
  • QTGUI4.DLL

我希望在构建所有相关文件(在某些其他项目中可能不同)之后,除了Windows特定文件(上面列表中的前两个)之外,它们将自动复制到exe所在的目录中.

如何在不使用命令行脚本的情况下在Qt Creator或Qt系统中执行此操作?谢谢.

c++ build-automation qt qt-creator

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

有效实现自然对数​​(ln)和取幂

基本上,我正在寻找C库中提供的实现log()exp()功能<math.h>.我正在使用8位微控制器(OKI 411和431).我需要计算平均动力学温度.要求是我们应该能够尽可能快地计算MKT并尽可能少地使用代码存储器.编译器附带log()exp()运行<math.h>.但调用两个函数,并与库链接会导致代码大小5千字节,这将不适合于我们与(OKI 411)工作在微的一个增加,因为我们的代码已经消耗〜12K可用〜15K代码存储器.

我正在寻找的实现不应该使用任何其他C库函数(如pow(),sqrt()等).这是因为所有库函数都打包在一个库中,即使调用了一个函数,链接器也会将整个5K库带到代码存储器中.

编辑

该算法应该最多3位小数.

c math microcontroller

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

static_cast vs dynamic_cast

假设我得到了一个充满继承的C++库.Base*当我知道它实际上指向一个Derived对象并Derived继承时,我给了一个函数Base.但我不知道它是什么类型的继承(public/protected/private).我也不知道层次结构中是否有任何虚函数.

鉴于这种情况,不看入源代码/文档BaseDerived,其中投我应该使用?或者我应该首先查阅代码/文档以确保多态性?

背景

我正在编写Qt 4.7的changeEvent功能QMainWindow.通过了解我可以将其转换为其他类型的changeEvent函数.我想知道我是否应该使用或.QEvent*QEvent::type()static_castdynamic_cast

谢谢.

c++ casting

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

如何从QGraphicsScene中删除所有QGraphicsItem

我写了一个派生类QGraphicsScene.在某一点上,我需要从场景中删除所有项目,我希望物品被物理销毁(析构函数被调用).我尝试了以下方法:

QList<QGraphicsItem*> all = items();
for (int i = 0; i < all.size(); i++)
{
    QGraphicsItem *gi = all[i];
    removeItem(gi);
    delete gi; // warning at this line
}
Run Code Online (Sandbox Code Playgroud)

Qt Creator发出警告:警告:C4150:删除指向不完整类型'QGraphicsItem'的指针; 没有破坏者叫

我不知道为什么会这样.QGraphicsItem有虚拟析构函数所以应该从内存中删除项目.

如果这不是正确的方法,我怎么能删除所有QGraphicsItemQGraphicsScene?请注意,我知道删除场景后,所有项目也将被删除.但我想从场景中删除项目并绘制其他项目.我希望从内存中删除已删除的项目.

c++ qt incomplete-type

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