小编use*_*688的帖子

Qt多键组合事件

我正在使用Qt 4.6,我想对正在按下的多键组合(例如Key_Q + Key_W)做出反应.因此,当您按住一个键组合时,应始终调用该事件,就像处理单个键事件一样.我尝试使用QShortcuts并为它们启用自动重复,但这不起作用:

keyCombos_.push_back(new QShortcut(QKeySequence(Qt::Key_W, Qt::Key_D), this));
connect(keyCombos_[0], SIGNAL(activated()), SLOT(keySequenceEvent_WD()));
setShortcutAutoRepeat(keyCombos_[0]->id(), true);
Run Code Online (Sandbox Code Playgroud)

当使用这种方法时,我也遇到了一个问题,即我无法捕获单个Key_W(或者密钥序列中的第一个键).

谢谢,托马斯

c++ events qt key

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

提升二进制序列化问题

我使用二进制存档使用boost序列化时遇到问题.它在使用文件流时有效但我想将它存储在我的本地变量中并最终将其保存/加载到berkeley db中.执行程序时,我在实例化binary_iarchive时得到一个boost :: archive :: archive_exception:'stream error' .

#include <sys/time.h>
#include <string>
#include <boost/serialization/serialization.hpp>
#include <boost/archive/binary_oarchive.hpp>
#include <boost/archive/binary_iarchive.hpp>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <fstream>
#include <sstream>

namespace boost {
namespace serialization {

template<class Archive>
void serialize(Archive & ar, timeval & t, const unsigned int version)
{
    ar & t.tv_sec;
    ar & t.tv_usec;
}

}//namespace serialization
}//namespace boost


int main(int, char**)
{
    timeval t1;
    gettimeofday(&t1, NULL);
    char buf[256];

    std::stringstream os(std::ios_base::binary| std::ios_base::out| std::ios_base::in);
    {
        boost::archive::binary_oarchive oa(os, boost::archive::no_header);
        oa …
Run Code Online (Sandbox Code Playgroud)

c++ binary serialization boost

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

标签 统计

c++ ×2

binary ×1

boost ×1

events ×1

key ×1

qt ×1

serialization ×1