标签: slot

如何查找信号是否连接到任何东西

有没有办法判断信号是否已连接到某个功能?

即我想看看signals.siSelectionChange是否连接到任何东西

signals.siSelectionChange.connect( self.SelAsSiAssets )
Run Code Online (Sandbox Code Playgroud)

python qt signals pyqt slot

3
推荐指数
2
解决办法
3793
查看次数

如何在Qt中使函数成为时间槽?

要使类的函数成为一个槽,该类必须从QObject继承.但是,QObject占用了相当大的内存.我不确定它是多少以及内存是针对每个类还是每个对象.我的代码有许多小数据,其功能有时可以是一个插槽.我很想知道是否有一种方法可以在使用它时使类的功能成为时间槽.使用后,将删除插槽成本的内存.以下代码说明了该要求.

class SmallData // size of 2 or 3 integers.
{
public:
    virtual void F(); // use it as a slot.
    virtual QMenu* createMenu(); // use this to create the context menu with
                                 // an action connected to F()
    ...
};

// use the small data
vector<SmallData> vec(1000000); // the vector is put at a tree view. When an
                                // item in the tree view is selected, a context
                                // menu pop up with an action to run F().
SmallData* …
Run Code Online (Sandbox Code Playgroud)

c++ qt slot

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

QComboBox连接

当QComboBox的currentIndex发生变化时,我需要用currentIndex + 1调用一个函数.今天早上我正在努力学习语法:

// call function readTables(int) when currentIndex changes.

connect(ui->deviceBox, SIGNAL(currentIndexChanged()),
   SLOT( readTables( ui->deviceBox->currentIndex()+1) );
Run Code Online (Sandbox Code Playgroud)

错误:预期')'SLOT(readTables(ui-> deviceBox-> currentIndex()+ 1));

添加关闭)将无法正常工作......!

qt qcombobox slot

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

如何让方法在返回之前发送信号并等待插槽?

我有一个ConnectionManager方法的类get_wifi_ssids()必须返回一个SSID列表.问题是需要使用这些SSID信号和插槽,但我无法找到一种方法来检索该信息而无需先退出该方法.

这是从最低级别到最高级别使用的类的层次结构.

/** Controls wireless network card by commanding a software component "connman" via DBus. */
class WifiController : QObject {
Q_OBJECT

public:

    void scan();
}

/** Low level interface to network interfaces. */
class NetworkController : QObject {
    Q_OBJECT

public:

    void scan_for_wifi() {
        wifi_controller.scan();
        // When scan is finished it sends the
        // NetworkTechnology::scanFinished signal.
    }

    // Gets info from cache. This cache is updated when a `scan()` happens.
    QList<AccessPointInfo> get_available_access_points;

private:
    WifiController wifi_controller;
} …
Run Code Online (Sandbox Code Playgroud)

c++ qt slot c++11 qt-signals

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

在 QTextEdit 子类中连接信号和插槽?

我从 QTextEdit 派生了一个类并将其用作“日志”。我为它配备了一个插槽来接收日志消息。

class CLogbook : public QTextEdit
{
   Q_OBJECT;
    public:
    void log(QString msg) {append(msg)};

    public slots:
    void recvLogSignal(const QString message)
    {    
         append("hallo");
         std::cout << "signal received.\n";    
         log(message);
    }
Run Code Online (Sandbox Code Playgroud)

};

另一个类然后发出这样的信号:

// in the header
signals:
    void logMessage(const QString);

// in the implementation
    emit logMessage("qt is cute");
    std::cout << "if you can read this the logMessage was emitted\n";
Run Code Online (Sandbox Code Playgroud)

我还将信号连接到插槽

connect(tableeditor, SIGNAL(logMessage(const QString)), logbook, SLOT(recvLogSignal(const QString)));
Run Code Online (Sandbox Code Playgroud)

但是,该消息从未显示在“日志”中。我在这里缺少什么?

已解决:发出信号后调用连接方法:-(

qt signals qtextedit slot

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

一个插槽的多个信号

对于我的GUI,我希望有两对按钮可以在滚动条上下滚动.第一组按钮应该在说scrollarea1上工作,第二组按钮应该在scrollarea2上工作.我放在scrollarea中的小部件称为viewport1和viewport2.由于两组按钮都应该相同(向上和向下滚动),我想我会创建两个名为scrollUp和scrollDown的插槽来处理两组按钮的滚动.不幸的是,我无法完成这项工作,需要一些帮助.我尝试过以下方法:

QPushButton up;
QPushButton down;
QPushButton up2;
QPushButton down2;

connect(&up,SIGNAL(clicked()),&up,SLOT(scrollUp()));
connect(&up2,SIGNAL(clicked()),&up,SLOT(scrollUp()));
connect(&down,SIGNAL(clicked()),&down,SLOT(scrollDown()));
connect(&down2,SIGNAL(clicked()),&down,SLOT(scrollDown()));

void MainWindow::scrollDown()
{
QScrollArea area;
QWidget view;

if((QPushButton) &sender = down)
{
    area=scrollArea;
    view=viewport;
}
if((QPushButton) &sender = down2)
{
    area=scrollArea;
    view=viewport;
}
int curpos = area.verticalScrollBar()->value();
area.verticalScrollBar()->setValue(curpos+15);
int newpos = area.verticalScrollBar()->value();
QPoint topLeft = area.viewport()->rect().topLeft();
view.move(topLeft.x(),topLeft.y()-(newpos));
}

void MainWindow::scrollUp()
{
QScrollArea area;
QWidget view;

if((QPushButton) &sender = up)
{
    area=scrollArea;
    view=viewport;
}
if((QPushButton) &sender = up2)
{
    area=scrollArea2;
    view=viewport2;
}
int curpos = area.verticalScrollBar()->value();
area.verticalScrollBar()->setValue(curpos-15);
int …
Run Code Online (Sandbox Code Playgroud)

qt signals sender slot

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

Qt PushButton信号和插槽

我几乎是Qt的初学者.无论如何,一旦按下按钮,我正在尝试使用信号和插槽来显示小部件.我创建了小部件,并且完成了connect()这一切,但是我在SLOT()中添加了什么呢?我试过show(小部件),但老实说我不知道​​该放什么.

qt show slot qpushbutton

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

Qt插槽和信号语法

我已经搜索了大量的帮助讨论并阅读了多个教程,但我仍然不理解Qt信号和插槽的正确语法,使用Qt Core 5.0我创建了一个非常简单的程序,有两个对象来尝试理解这个语法.(如下所示).每次编译此代码时,都会收到以下错误:

'int'之前的预期primary-expression

请帮我解答以下问题:

  1. 我写的代码有什么问题?

  2. Qt connect函数是否需要指向对象引用(&mySig)而不是直接指向对象?

  3. 当我使用包含参数的插槽和信号时,在连接功能中,我是否需要为这些参数提供变量,或者只是说明数据类型,如下面的代码所示?

  4. 最后,我想使用插槽和信号在我正在编写的程序中的对象之间传递数据.插槽和信号是否允许我传递从QObject派生的其他对象?或者我需要做一些额外的事情吗?

  5. 我看到许多对使用的connect语句格式的引用

    QObject :: contect(&mySig,SIGNAL(sig_1(int)),&mySlot,SLOT(slot1(int)));

    这种格式在Qt 5.0 Core下仍然有效吗?

非常感谢所有的帮助!简单程序代码如下.

#include <QCoreApplication>
#include <QObject>
#include <iostream>

using namespace std;

//================================================================================
class testSig : public QObject
{
    Q_OBJECT
public:
    explicit testSig(QObject *parent = 0) :
        QObject(parent)
    {
    }

    void getNum()
    {
        int t;
        cout << endl << endl << "Please Enter Number:  ";
        cin >> t;
        emit sig_1(t);
    }

signals:
    void sig_1(int i );
};

//================================================================================
class testSlot : public QObject
{
    Q_OBJECT …
Run Code Online (Sandbox Code Playgroud)

c++ syntax qt signals slot

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

C++,Qt:包含外部库中名为"slots"的变量

我正在使用Qt编写包含外部库的桌面应用程序.问题是我在包含外部库时遇到错误:

.../sc_containers.h:667: error: expected unqualified-id before ';' token
   sc_array_t         *slots;
                            ^
Run Code Online (Sandbox Code Playgroud)

我成功地在包括非QT项目相同的库之前,所以我认为这个错误与Qt所使用的事实,slots作为一个特殊的关键字(见这里 Qt的文档).

有没有办法可以在我的程序中使用该外部库?由于这不是我自己的库,因此将变量名称更改为其他名称并不是一种选择.

提前致谢!

c++ qt slot qt5

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

如何在 JSX 中获取 vue slot 属性?

我编写了一个使用模板语法的子组件,子组件有一个槽将“item”属性传输给父组件,但父组件使用JSX语法,现在我很难在JSX中获取“item”属性。任何帮助将不胜感激!

// child.vue
<template>
  <Autocomplete>
    <template slot-scope="{ item }">
      <slot :item="item" />
    </template>
  </Autocomplete>
</template>
Run Code Online (Sandbox Code Playgroud)
// parent.vue
export default {
  render () {
    return (
      <Child>
        <template slot-scope='{item}'>
          <span>{item}</span> // item is not defined 
        </template>
      </Child>
    )
  }
}
Run Code Online (Sandbox Code Playgroud)

jsx slot vue.js

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

标签 统计

slot ×10

qt ×9

c++ ×4

signals ×4

c++11 ×1

jsx ×1

pyqt ×1

python ×1

qcombobox ×1

qpushbutton ×1

qt-signals ×1

qt5 ×1

qtextedit ×1

sender ×1

show ×1

syntax ×1

vue.js ×1