小编Mat*_*ski的帖子

在键盘hotplug上加载模块

我正在尝试学习如何为Linux系统编写模块和驱动程序.与问题类似,我试图在USB键盘热插拔上运行一个简单的"Hello World"模块(下面的代码).即使通过命令初始化模块insmode并且modprobe似乎工作(dmesg显示调试消息),插入键盘时也不会加载模块.

我做了什么:

  1. 运行make以生成hellomodule.ko文件.
  2. hellomodule.ko文件复制到/ lib/modules /"my_kernel_version"/
  3. 运行depmod -a命令.

这三个步骤后,我有我的模块添加modules.aliasmodules.dep文件.它仍然无法正常工作.

这个内核配置是故障还是完全不同?

系统:Ubuntu 14.04 LTS ; 内核:3.14.0

hellomodule.c:

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/usb.h>
#include <linux/usb/input.h>
#include <linux/hid.h>

MODULE_AUTHOR("author");
MODULE_DESCRIPTION("helloworld module\n");
MODULE_LICENSE("GPL");

static struct usb_device_id hello_id_table [] = {
        { USB_INTERFACE_INFO(USB_INTERFACE_CLASS_HID,
        USB_INTERFACE_SUBCLASS_BOOT,
            USB_INTERFACE_PROTOCOL_KEYBOARD) },
    { } /* Terminating entry */
};

MODULE_DEVICE_TABLE (usb, hello_id_table);

static int hello_probe(struct …
Run Code Online (Sandbox Code Playgroud)

linux module

16
推荐指数
1
解决办法
8669
查看次数

显示每分钟自动更新的时间

我有一个QML应用程序,其中我正在尝试一个显示当前时间的简单时钟 - 与每个操作系统中的类似.

时间应该作为文本格式呈现给用户hh:mm, 16:12.

目前我正在尝试在应用程序生命周期内运行Timer组件并通过调用更新文本的解决方案:

timeText.text = Qt.formatTime(new Date(),"hh:mm")

每60秒一次.有没有更好的方法来执行此操作或使用Timer组件是必要的.

整个代码的代码段:

Text {
    id: timeText
    x: 10
    y: 10
    text: Qt.formatTime(new Date(),"hh:mm")
}

Timer {
    id: timer
    interval: 60000
    repeat: true
    running: true

    onTriggered:
    {
        timeText.text =  Qt.formatTime(new Date(),"hh:mm")
    }
}
Run Code Online (Sandbox Code Playgroud)

qt qml

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

QTabWidget角落QToolButton小部件消失了

我有一个QTabWidget,动态添加和删除了标签.我还将QToolButton设置为角落小部件,以便处理其clicked()信号上的添加事件.

虽然添加工作完全正常,从窗口小部件中删除所有选项卡会导致按钮消失.我已经尝试使用样式表来创建一个宽度为0的隐形第一个标签,但这种方法让我失望.可能是因为我setTabsClosable(true)在所有选项卡上都有关闭按钮的空间.

当没有标签时,当QTabBar将其高度折叠为0时,我还认为按钮正在消失.我试过,tabBar()->setMinimumHeight(30);但这种解决方法也没有用.有任何想法吗?

这里我的代码示例再现了问题:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QToolButton"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    ui->tabWidget->setTabsClosable(true);
    ui->tabWidget->tabBar()->setMinimumHeight(30);

    QToolButton *btn = new QToolButton(ui->tabWidget);
    btn->setText("Add new");
    btn->setCursor(Qt::ArrowCursor);
    btn->setAutoRaise(true);
    ui->tabWidget->setCornerWidget(btn, Qt::TopLeftCorner);

    qDebug() << ui->tabWidget->cornerWidget(Qt::TopLeftCorner);  

    connect(ui->tabWidget, SIGNAL(tabCloseRequested(int)), this, SLOT(closeTab(int)));

}

MainWindow::~MainWindow()
{
    delete ui;
}

//SLOT
void MainWindow::closeTab(int index)
{
    ui->tabWidget->removeTab(index);
    if(ui->tabWidget->count() == 0)
        qDebug() << ui->tabWidget->cornerWidget(Qt::TopLeftCorner);
}
Run Code Online (Sandbox Code Playgroud)

c++ qt

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

QAudioDecoder - 未找到服务

我正在尝试使用QAudioDecoder类解码.wav文件。尽管我通过添加将QtMultimedia模块包含到我的.pro文件中, 但我收到了一个错误,即未找到QAudioDecoder 的服务。我看不出问题出在哪里。QT += multimedia

我在 Windows 7 上使用 Qt 5.1.0 和 MingGW 4.8 32 位。

错误信息:

defaultServiceProvider::requestService(): no service found for - "org.qt-project.qt.audiodecode"

.pro文件:

QT       += core
QT       += multimedia
QT       -= gui

TARGET = test
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app
SOURCES += main.cpp
Run Code Online (Sandbox Code Playgroud)

文件:

#include <QCoreApplication>
#include <QAudioDecoder>
#include <QAudioBuffer>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QString pathToFile …
Run Code Online (Sandbox Code Playgroud)

c++ qt qtmultimedia

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

在QGraphicsView中创建自动滚动功能

我有一个QGraphicsView和一个QGraphicsScene.根据用户输入,QGraphicsItem可以将一些放置在场景上.此项目既可选择又可移动.

当场景大于视图滚动条时(它们设置为在必要时显示).

当用户在视图边缘附近移动项目时,场景宽度/高度会相应地拉伸 - 我使场景变大.

问题是当项目靠近视图边界时,如何强制滚动条与场景一起滚动?我觉得在任何图形编辑器中都很常见.在MouseMoveEvent场景中我使场景变大,强制滑块移动并相应地更新可见矩形.

这不符合预期.即使认为卷轴正在调整到新的场景大小,视图中也没有平滑的移动.这样做有更好的方法吗?

一些解释:

    itemUnderCursor = currently slected QGraphicsItem
    qgv = QGraphicsView
Run Code Online (Sandbox Code Playgroud)

代码段:

    // check if item is near the border
    QPointF point = itemUnderCursor->mapToScene(itemUnderCursor->boundingRect().topLeft());
    double delta = 0;

    if(point.x() < visibleRect.left())
    {
        // prevent from drawing outside the scene
        itemUnderCursor->setPos(visibleRect.left(), itemUnderCursor->scenePos().y());

        if(event->scenePos().x() < oldMousePos.x()-3)
        {
            // stretch the scene
            if(qgv->horizontalScrollBar()->value() <= 0)
                setSceneRect(QRectF(QPointF(sceneRect().x() - 3, sceneRect().y()), sceneRect().bottomRight()));
            /*
             * disable signals from DrawingArea in order …
Run Code Online (Sandbox Code Playgroud)

c++ qt qgraphicsview autoscroll qgraphicsscene

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

使用memcpy复制从QGraphicsItem派生的类不会创建新对象

我有几个不同的类派生自QGraphicsItem或其子(如QGraphicsRectItem).我现在需要复制这些类的选定对象,而不知道我确切地复制了哪一个.

因为QGraphicsScene::selectedItems()我决定使用它返回所选项目的列表,但是我不能复制它,QGraphicsItem因为它是一个抽象类.为了解决这个问题,我试图使用malloc和复制对象memcpy.

  1. MainWindow.cpp

    MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
        scene = new QGraphicsScene();
        item = new QGraphicsRectItem(50,50,50,50);
        item->setFlag(QGraphicsItem::ItemIsSelectable);
        scene->addItem(item);
        item->setSelected(true);
        ui->graphicsView->setScene(scene);
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    void MainWindow::on_pushButton_clicked()
    {
        for(QGraphicsItem *item : scene->selectedItems())
        {
            QGraphicsItem *copiedItem=(QGraphicsItem *)malloc(sizeof(*item));  
            memcpy(copiedItem, item, sizeof(*copiedItem));   
            copiedItem->moveBy(50, 50);
            scene->addItem(copiedItem);
    
            qDebug() << item;
            qDebug() << copiedItem;
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. MainWindow.h

    namespace Ui {
    class MainWindow;
    }
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT …
    Run Code Online (Sandbox Code Playgroud)

c++ malloc qt memcpy qgraphicsscene

0
推荐指数
1
解决办法
1981
查看次数