我正在尝试使用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_INFO
load命令,该命令仅在10.6中可用.
我重新安装了带-v选项的端口,发现它下载并安装了一个预编译的软件包而无需编译.该软件包显然是在10.6台机器上构建的.
问题是:如何强制MacPorts使用我的设置在我的机器上构建端口?谢谢.
编辑:我正在使用此命令构建x86/x64通用二进制文件:
sudo port -v install libiconv +universal
Run Code Online (Sandbox Code Playgroud) 我一直在阅读Qt的Model/View框架.我发现使用像数据库中的表这样的表数据非常有用.我的问题是:对于非表格数据,如属性列表或只是一些不同类型的数据,它会有用吗?如果是这样,我应该如何处理它?
目标是为数据等属性列表提供编辑器.该列表在运行时构造,并且元素具有各种类型(数字,字符串,布尔值和文件路径,仅举几例).每个元素基本上都是一个名称 - 值对.在编译时定义每个元素的名称,类型和约束(例如限制).根据用户输入,它们将在运行时组装到不同的列表中.元素列表可以在编辑会话期间更改.
UI很可能是根据用户输入组装的各种预先设计的小部件的组合.它们可能不是列表或表视图.
一些指向设计模式或示例的指针也非常受欢迎.谢谢.
假设我在Xcode 4工作区中有2个项目.项目A是最终产品,需要从项目B构建的实用程序应用程序.目标是让A的构建过程在必要时自动构建项目B,然后将构建的应用程序复制到产品A的应用程序包的资源文件夹中.
Xcode 4的文档在这方面确实缺乏.我尝试将已构建的B.app 添加到项目A中,并将" 添加文件"添加到"项目A"...命令.它会复制应用程序包,但不会检查依赖项.也就是说,它在更新时不会自动构建项目B.
任何指向找到正确文档的指针也非常感谢.
编辑:我希望完成本文档中提到的前两个好处,即:
一个项目可以在构建时使用另一个项目的产品.
如果一个项目依赖于同一工作空间中另一个项目的产品,Xcode可以检测到这一点,并以正确的顺序自动构建项目.
我知道将项目作为子项目添加到另一个项目的简单旧项目方式,因此我可以设置目标依赖项.但是从工作空间文档的措辞来看,似乎有一种更简单,更自动的方式.但我无法找到执行这两个功能之一的步骤.
请考虑以下代码:
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) 我正在尝试使用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) 我需要使用超过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) 我有一个我用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) 我正在使用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不太满意,这对我来说非常复杂.
我正在使用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我有一个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) 在内部发射信号QRunnable::run()
是正确的事吗?我需要通知我的GUI线程处理QRunnable
完成的图像。我正在使用QThreadPool
/,QRunnable
因为当池中已经有任务时,我需要能够向池中添加新任务。我发现使用QtConcurrent
和很难做到这一点QFutureWatcher
。
的QRunnable
是使用QObject
在创建run()
连接到目标QObject
并发射信号。
如果发出来QRunnable
不是一件好事,是否可以从那里发布事件?