小编Ste*_*Chu的帖子

防止MacPorts安装预构建的包?

我正在尝试使用MacPorts安装libiconv.我需要构建它以在OS X 10.5中运行,而我的Mac运行10.6.所以我把它添加到macports.conf:

macosx_deployment_target 10.5
Run Code Online (Sandbox Code Playgroud)

据说迫使MacPorts用10.5 SDK构建端口.但是,已安装的库仍包含LC_DYLD_INFOload命令,该命令仅在10.6中可用.

我重新安装了带-v选项的端口,发现它下载并安装了一个预编译的软件包而无需编译.该软件包显然是在10.6台机器上构建的.

问题是:如何强制MacPorts使用我的设置在我的机器上构建端口?谢谢.

编辑:我正在使用此命令构建x86/x64通用二进制文件:

sudo port -v install libiconv +universal
Run Code Online (Sandbox Code Playgroud)

macports

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

使用Qt Model/View与非表格数据和非表格/列表UI?

我一直在阅读Qt的Model/View框架.我发现使用像数据库中的表这样的表数据非常有用.我的问题是:对于非表格数据,如属性列表或只是一些不同类型的数据,它会有用吗?如果是这样,我应该如何处理它?

目标是为数据等属性列表提供编辑器.该列表在运行时构造,并且元素具有各种类型(数字,字符串,布尔值和文件路径,仅举几例).每个元素基本上都是一个名称 - 值对.在编译时定义每个元素的名称,类型和约束(例如限制).根据用户输入,它们将在运行时组装到不同的列表中.元素列表可以在编辑会话期间更改.

UI很可能是根据用户输入组装的各种预先设计的小部件的组合.它们可能不是列表或表视图.

一些指向设计模式或示例的指针也非常受欢迎.谢谢.

c++ model-view-controller qt

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

Xcode:如何在同一个工作区中将构建的产品从一个项目添加到另一个项目?

假设我在Xcode 4工作区中有2个项目.项目A是最终产品,需要从项目B构建的实用程序应用程序.目标是让A的构建过程在必要时自动构建项目B,然后将构建的应用程序复制到产品A的应用程序包的资源文件夹中.

Xcode 4的文档在这方面确实缺乏.我尝试将已构建的B.app 添加到项目A中,并将" 添加文件"添加到"项目A"...命令.它会复制应用程序包,但不会检查依赖项.也就是说,它在更新时不会自动构建项目B.

任何指向找到正确文档的指针也非常感谢.

编辑:我希望完成本文档中提到的前两个好处,即:

  • 一个项目可以在构建时使用另一个项目的产品.

  • 如果一个项目依赖于同一工作空间中另一个项目的产品,Xcode可以检测到这一点,并以正确的顺序自动构建项目.

我知道将项目作为子项目添加到另一个项目的简单旧项目方式,因此我可以设置目标依赖项.但是从工作空间文档的措辞来看,似乎有一种更简单,更自动的方式.但我无法找到执行这两个功能之一的步骤.

xcode build-process build

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

Lambda捕获导致不兼容的操作数类型错误?

请考虑以下代码:

main()
{
    bool t;
    ...
    std::function<bool (bool)> f = t ? [](bool b) { return b; } : [](bool b) { return !b; }; // OK
    std::function<bool (bool)> f = t ? [t](bool b) { return t == b; } : [t](bool b) { return t != b; }; // error
}
Run Code Online (Sandbox Code Playgroud)

使用Clang 3.1编译时,非捕获lambda的赋值在捕获失败的情况下有效:

main.cpp:12:36: error: incompatible operand types ('<lambda at main.cpp:12:38>' and '<lambda at main.cpp:12:71>')
        std::function<bool (bool)> f2 = t ? [t](bool b) { return t == b; …
Run Code Online (Sandbox Code Playgroud)

c++ lambda clang c++11

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

MacPorts Clang 3.1缺少标准库安装?

我正在尝试使用MacPorts安装的clang在C++ 11中初始化列表功能.编译这个简单的代码时:

#include <vector>

int main()
{
    std::vector<int> a {1, 3, 5};
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我收到了这个错误:

stephen-chus-mac-pro:~ stephenchu$ clang -std=c++0x -c text.cxx -I/opt/local/include -v
clang version 3.1 (trunk 154872)
Target: x86_64-apple-darwin10.8.0
Thread model: posix
 "/opt/local/libexec/llvm-3.1/bin/clang" -cc1 -triple x86_64-apple-macosx10.6.0 -emit-obj -mrelax-all -disable-free -main-file-name text.cxx -pic-level 2 -mdisable-fp-elim -masm-verbose -munwind-tables -target-cpu core2 -target-linker-version 127.2 -v -coverage-file text.o -resource-dir /opt/local/libexec/llvm-3.1/bin/../lib/clang/3.1 -I /opt/local/include -fmodule-cache-path /var/folders/UL/ULMxdJJtEQuI+WuToNAFpk+++TI/-Tmp-/clang-module-cache -std=c++0x -fdeprecated-macro -fdebug-compilation-dir /Users/stephenchu -ferror-limit 19 -fmessage-length 80 -stack-protector 1 -mstackrealign -fblocks -fobjc-dispatch-method=mixed -fobjc-default-synthesize-properties -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -o …
Run Code Online (Sandbox Code Playgroud)

c++ macports clang c++-standard-library c++11

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

bitset超过32位?

我需要使用超过32位的位标志(现在确切地说是33位).我试过,发现std :: bitset不能处理超过32位(ulong).我是否必须使用矢量或有一种方法使bitset工作?

我在这个项目中仅限于c ++ 98,所以我不能使用boost.

谢谢.

编辑:

我想做这样的事情:

const uint64    kBigNumber = 1LL << 33;
std::bitset<33> myBitSet;
...
switch(myBitSet) {
    case kBigNumber:
    // do something
    ...
}
Run Code Online (Sandbox Code Playgroud)

c++ stl bitset

4
推荐指数
2
解决办法
5099
查看次数

从QImage获取原始数据

我有一个我用pixmap构建的QImage,如下所示:

QPixmap fullPmap = topItem->pixmap();
fullPmap = fullPmap.copy(isec.toRect());
QImage chip = fullPmap.toImage();
Run Code Online (Sandbox Code Playgroud)

这基本上与屏幕上的矩形相交以将图像裁剪为切削尺寸.

我现在需要从芯片中获取表示该数据的字符数组.

我怎样才能做到这一点?

我试过这样的事情:

  unsigned char * data = chip.bits();
Run Code Online (Sandbox Code Playgroud)

当我显示"数据"时,我得到一个完全失真的图像,没有像我的实际芯片那样.

如果重要的话,fullPmap是一个RGB图像.我有一些代码,我用它来将其转换为灰度:

QRgb col;
int gray;
for (int i = 0; i < chip.width(); ++i)
{
    for (int j = 0; j < chip.height(); ++j)
    {
        col = chip.pixel(i, j);
        gray = qGray(col);
        chip.setPixel(i, j, qRgb(gray, gray, gray));
    }
}
Run Code Online (Sandbox Code Playgroud)

我真的不喜欢,但这似乎是做这种事情最简单的方法.

显示从bits()返回的数据如下所示:

imwidth = chip.width();
imheight = chip.height();
QImage *qi = new QImage(imwidth, imheight, QImage::Format_RGB32);
//  #pragma omp …
Run Code Online (Sandbox Code Playgroud)

c++ qt qt4

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

Qt:如何在不区分大小写模式下减去两个QString的QSet

我正在使用Qt解决逻辑问题.我有两个QString的QSets:

QSet<QString> set1: [ "aaa", "BBB" ]
QSet<QString> set2: [ "aaa", "bbb", "ccc", "ddd" ]
Run Code Online (Sandbox Code Playgroud)

我想从set2中减去set1,所以我使用:

set2.subtract( set1 );
Run Code Online (Sandbox Code Playgroud)

我得到:

set2: ["bbb", "ccc", "ddd"]
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,"bbb"不会从set2中删除,尽管set1包含此记录.那是因为默认的QString :: contains方法(它是QSet :: subtract使用的方法)区分大小写.

还有另一个QString :: contains方法,它接受一个参数来定义区分大小写模式,但我真的不知道如何使用它.

有没有人知道如何在两个QString的QSet之间进行不区分大小写的减法,好吗?

这是我到目前为止所尝试的:

转换为大写 set2的两个集合都显示在列表中,因此如果所有项目都是大写(或者都不是小写),则不会很奇怪.

扩展QSet类和覆盖减法方法我试图用MyStringSet自定义类扩展这个类,但我对Qt不太满意,这对我来说非常复杂.

c++ qstring qt set subtraction

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

如何在 Qt 中重新绘制新线之前删除/清除以前绘制的线?

我正在使用paintEvent(QPaintEvent * event). 稍后,如果我想绘制新线,则不会清除/删除先前绘制的线。我怎么能通过删除/清除旧线来只绘制新线。是否有任何财产可以清除先前绘制的线条。请告诉我。

void QGraphWidget::paintEvent(QPaintEvent * event)
{
    const QRect & rect = event->rect();
    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing);
    drawLines(painter, rect);//calling painter.drawLine() inside
}
Run Code Online (Sandbox Code Playgroud)

谢谢...

qt

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

获得qint64的最重要字节

在QT我有一个qint64.是否有一种简单的方法将其分成大小为int8_t?

为清楚起见,如果我有一个

qint64 a = [11001000 00001111 11110000 ... 11001100] 
Run Code Online (Sandbox Code Playgroud)

我想得到

int8_t a1=[11001000] 
int8_t a2=[00001111]
int8_t a3=[11110000] 
... 
int8_t a8=[11001100]
Run Code Online (Sandbox Code Playgroud)

c++ qt

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

从QRunnable发出信号或发布事件

在内部发射信号QRunnable::run()是正确的事吗?我需要通知我的GUI线程处理QRunnable完成的图像。我正在使用QThreadPool/,QRunnable因为当池中已经有任务时,我需要能够向池中添加新任务。我发现使用QtConcurrent和很难做到这一点QFutureWatcher

QRunnable是使用QObject在创建run()连接到目标QObject并发射信号。

如果发出来QRunnable不是一件好事,是否可以从那里发布事件?

events qt multithreading signals-slots threadpool

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