我在使用Qt信号时遇到问题.
我不明白怎么做DirectConnection和QueuedConnection有效?
如果有人会解释何时使用其中的哪一个(示例代码将被赞赏),我将感激不尽.
我QByteArray和他有问题QString.
我正在读取文件并将其信息存储在一个文件中QByteArray.该文件是unicode,因此它包含以下内容:t\0 e\0 s\0 t\0 \0 \0
我试图将此值与我的指定值进行比较,但它失败了,因为在调试器中我看到它不是unicode字符串.
代码将解释一切:
QByteArray Data; //contains unicode string "t\0 e\0 s\0 t\0 \0 \0"
QString myValue = "test"; //value to compare.
if(Data.contains(myValue))
//do some stuff.
else
//do other stuff.
Run Code Online (Sandbox Code Playgroud)
在调试器中,它向我显示变量Data具有值"t\0 e\0 s\0 t\0 \0 \0"并myValue具有值"test".我该如何解决?
我是图形编程的新手(像素,图像等).我正在尝试将原始数据转换为QImage并将其显示在QLabel上.问题是,原始数据可以是任何数据(它实际上不是图像原始数据,它是二进制文件.)如果是这样的原因,要深入了解像素和像这样的东西是如何工作的,我知道我会随机图像有奇怪的结果,但它会工作.我正在做这样的事,但我想我做错了!
QImage *img = new QImage(640, 480, QImage::Format_RGB16); //640,480 size picture.
//here I'm trying to fill newly created QImage with random pixels and display it.
for(int i = 0; i < 640; i++)
{
for(int u = 0; u < 480; u++)
{
img->setPixel(i, u, rawData[i]);
}
}
ui->label->setPixmap(QPixmap::fromImage(*img));
Run Code Online (Sandbox Code Playgroud)
我做得对吗?顺便问一下,你能指出我应该在哪里学习这些东西吗?谢谢!
我正在尝试构建基于房间管理(大厅、配对、房间等)的应用程序(更准确地说是我个人项目的库)。
我设法用 socket.io 做到了。
现在,我的问题是,我不知道应该使用什么样的设计模式。
我注意到 socket.io 有 ack 回调,这让我感到惊讶并认为它很好,但我不确定发送回带参数的 ack 或发出带参数的事件有什么区别。
那么,问题是,使用 ack 相对于发出事件有什么优缺点,反之亦然?
让我们说一下,使用以下代码有什么优点和缺点:
假设处理程序回调是fn(err, res);
致谢方式:
socket.on('join', function (data, ack) {
// do the joining stuff here.
return ack(null, { response: 'goes_here' });
});
Run Code Online (Sandbox Code Playgroud)
相对
事件发出风格:
socket.on('join', function (data, ack) {
// do the joining stuff here.
io.to(client_sid).emit('join_response', null, { response: 'goes_here' });
});
Run Code Online (Sandbox Code Playgroud) 我收到转账时遇到问题.
当我发送它时,QTcpSocket-> readAll()没有读取足够的字节.当我发送像15k字节时,它只读取它的一部分,然后什么都不做.我做错了什么?
QByteArray array;
array = socket->readAll(); //just reads some part, not fully.
Run Code Online (Sandbox Code Playgroud)
为什么?
对不起我的英语不好.
问候.
我无法确定系统运行的时间.我现在太累了,但无所事事.我使用GetTickCount()来获得毫秒数,但我必须将它们转换为人类可读的格式.我试过这样的事情,但结果很奇怪.
void GetUpTime(DWORD Tick) //GetTickCount() argument.
{
wchar_t temp[256] = {0};
ZeroMemory(tmpBuff, sizeof(tmpBuff));
wsprintfW(temp, L"%uh %um %us", Tick/60, Tick/60*60, Tick/60*60*60);
lstrcpyW(Time, tmpBuff);
}
Run Code Online (Sandbox Code Playgroud)
正如我猜这里,Tick/60 =秒,Tick/60*60 =分钟和Tick/60*60*60 =小时.但是我需要这样的事情:1小时5分36秒而不是整个谈话.问候.
我在使用C++中的有效指针时遇到问题.我在不同的线程中使用一个对象,所以我不能只将指针设置为NULL并返回.这是我正在尝试的:
int main()
{
char *ptr = new char[1024]; //assume PTR = 0x12345678
changePtr(ptr); //after calling this,
//ptr is not NULL here.
return 0;
}
void changePtr(char *ptr)
{
delete [] ptr; //ptr = 0x12345678
ptr = NULL; //ptr = NULL
}
Run Code Online (Sandbox Code Playgroud)
如何ptr为两个函数更改为NULL?
我正在尝试用malloc和free替换operator new和delete(我有理由).问题显示在下面的代码中:
std::string *temp = (std::string *)malloc(sizeof(std::string) * 2); // allocate space for two string objects.
temp[0] = "hello!";
temp[1] = "world!";
for(int i = 0; i < 2; i++)
{
printf("%s\n", temp[i].c_str());
}
free(temp);
return 0; // causes SIGSEGV.
Run Code Online (Sandbox Code Playgroud)
然而..
std::string *temp = new std::string[2];
temp[0] = "hello!";
temp[1] = "world!";
for(int i = 0; i < 2; i++)
{
printf("%s\n", temp[i].c_str());
}
delete [] temp;
return 0; // works fine
Run Code Online (Sandbox Code Playgroud)
为什么?并且有人可以建议我用malloc和free替换这些运算符的正确方法是什么?
问候.
编辑:这只是一个例子,我没有使用标准的C++库.
编辑:这样的事情怎么样?
class myclass
{
public: …Run Code Online (Sandbox Code Playgroud) c++ ×6
qt ×4
c ×1
memory ×1
pointers ×1
qbytearray ×1
qimage ×1
qstring ×1
qt-signals ×1
qtcore ×1
qtcpsocket ×1
qthread ×1
socket.io ×1
windows ×1