标签: slot

QSignalMapper如何工作?

我在这里发布后:将信号和插槽关联到qcheckbox动态创建我需要关联:

clicked()单击某个qCheckBox功能时的信号cliqueCheckBox(QTableWidget *monTab, int ligne, QCheckBox *pCheckBox)

要做到这一点,我必须使用QSignalMapper,经过两个小时试图了解它是如何工作的,我不能有一个好的结果,这是我做的代码,这显然是错误的:

 QSignalMapper *m_sigmapper = new QSignalMapper(this);
 QObject::connect(pCheckBox, SIGNAL(mapped(QTableWidget*,int, QCheckBox*)), pCheckBox, SIGNAL(clicked()));
 QObject::connect(this, SIGNAL(clicked()), this, SLOT(cliqueCheckBox(QTableWidget *monTab, int ligne, QCheckBox *pCheckBox)));

 m_sigmapper->setMapping(pCheckBox, (monTab,ligne, pCheckBox));
 QObject::connect(m_sigmapper, SIGNAL(clicked()),this, SLOT(cliqueCheckBox(QTableWidget *monTab, int ligne, QCheckBox *pCheckBox)));
Run Code Online (Sandbox Code Playgroud)

你能解释一下,怎么样QSignalMapper?我真的不明白要联系到什么:(

c++ qt slot qt-signals qsignalmapper

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

在Qt中允许将信号连接到具有较少参数的插槽?

打电话有效吗?

QObject::connect(a, SIGNAL(somesig(someparam)), b, SLOT(someslot()));
Run Code Online (Sandbox Code Playgroud)

没有参数?它似乎工作(没有抛出运行时异常),但我在文档中找不到引用.我发现只有someslot有一个默认参数才有可能.在这种情况下它是有效的.但是我的方法someslot没有与默认值相同的参数设置(示例中没有参数).

那么似乎可以将信号连接到参数较少的插槽?

qt signals slot

9
推荐指数
1
解决办法
3354
查看次数

第一次通话后断开插槽的优雅方式

在构造函数内部,有一个连接:

connect(&amskspace::on_board_computer_model::self(),
      SIGNAL(camera_status_changed(const amskspace::camera_status_t&)),
      this,
      SLOT(set_camera_status(const amskspace::camera_status_t&)));
Run Code Online (Sandbox Code Playgroud)

方法:

void camera_model::
set_camera_status(const amskspace::camera_status_t& status) {
  disconnect(&amskspace::on_board_computer_model::self(),
             SIGNAL(camera_status_changed(const amskspace::camera_status_t&)),
             this,
             SLOT(set_camera_status(const amskspace::camera_status_t&)));

  // do the job
}
Run Code Online (Sandbox Code Playgroud)

我想在第一次通话后断开此插槽.

问题是:有没有办法只调用一次插槽?没有明确的断开连接?像单枪法一样?可能吗?

c++ qt signals slot

9
推荐指数
1
解决办法
2152
查看次数

如何按名称选择所有槽位?

我正在处理这种情况...

<template>
  <slot name="thing"></slot>
  <slot name="other"></slot>
</template>
Run Code Online (Sandbox Code Playgroud)

和一个像这样的实现

<custom-element>
  <div slot="thing"> Thing 1 </div>
  <div slot="thing"> Thing 2 </div>
  <div slot="other"> Thing 3 </div>
</custom-element>
Run Code Online (Sandbox Code Playgroud)

如何使用 CSS 查询影响事物 1 和事物 2 但排除事物 3?

css custom-component web-component slot shadow-dom

9
推荐指数
1
解决办法
6016
查看次数

R_Extracting SpatialPolygonsDataFrame中的坐标

是否只有我从SpatialPolygonsDataFrame对象中提取多边形坐标的问题?我能够提取对象(ID,plotOrder)但不是坐标(coords)的其他槽.我不知道我做错了什么.请在下面找到我的R会话,其中有两个多边形bdryDataSpatialPolygonsDataFrame对象.

> bdryData
An object of class "SpatialPolygonsDataFrame"
Slot "data":
  ID GRIDCODE
0  1        0
1  2        0

Slot "polygons":
[[1]]
An object of class "Polygons"
Slot "Polygons":
[[1]]
An object of class "Polygon"
Slot "labpt":
[1] 415499.1 432781.7

Slot "area":
[1] 0.6846572

Slot "hole":
[1] FALSE

Slot "ringDir":
[1] 1

Slot "coords":
         [,1]     [,2]
[1,] 415499.6 432781.2
[2,] 415498.4 432781.5
[3,] 415499.3 432782.4
[4,] 415499.6 432781.2



Slot …
Run Code Online (Sandbox Code Playgroud)

r geospatial slot

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

Qt发送信号到不同的线程

我搜索过这个问题,但他们和我的有点不同.我的问题是我不想从另一个线程接收信号,但我想发送一个.接收在我的应用程序中工作,但在尝试发送时,我收到错误,我试图发送到另一个线程...我不知道如何解决这个问题.这是我的情况:我有一个Gui应用程序.在MainWindow类中,我创建了一个继承自Qthread的myThread对象.然后我开始新的线程.在MainWindow中存在一个信号,在myThread中存在一个插槽(此代码在主窗口中运行).当我尝试做的时候:

connect(this, SIGNAL(disconnect(),
        connectionThread, SLOT(stop()));
Run Code Online (Sandbox Code Playgroud)

stop()是连接线程中的一个槽,disconnect()是来自MainWindow的信号.当信号发出时,我得到:

ASSERT failure in QCoreApplication::sendEvent: "Cannot send events to objects owned by a different thread. Current thread 128f8250. Receiver '' (of type 'QNativeSocketEngine') was created in thread 14bae218", file kernel\qcoreapplication.cpp, line 521
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.
Run Code Online (Sandbox Code Playgroud)

有办法克服这个问题吗?我需要能够通过信号和插槽向我创建的线程发送和接收事件.我真的会帮助你!

PS:我试过直接链接.

connect(this, SIGNAL(disconnectFromOven()),
            connectionThread, SLOT(stop()), Qt::DirectConnection);
Run Code Online (Sandbox Code Playgroud)

这是代码:MainWindow.h:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>


namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit …
Run Code Online (Sandbox Code Playgroud)

qt multithreading signals slot

8
推荐指数
1
解决办法
8445
查看次数

pyqt断开插槽.新风格

我为此分配了一个插槽.

...
self.query = QtGui.QLineEdit(self)            
self.query.textChanged.connect(lambda: self.makeThread(self.googleSearch()))
self.query.returnPressed.connect(lambda: self.launchNavigator(1))
...
Run Code Online (Sandbox Code Playgroud)

但我怎么能断开连接?我试过这个,但它不起作用......

self.query.textChanged.disconnect(lambda: self.makeThread(self.googleSearch()))
self.query.returnPressed.disconnect(lambda: self.launchNavigator(1))
Run Code Online (Sandbox Code Playgroud)

python signals pyqt disconnect slot

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

如何将子项渲染到 VueJs 中指定的命名槽中?

请参阅下面的代码,即使指定了插槽名称,当前所有子项都在默认插槽中呈现。

不确定 vue createElement 函数是否支持命名槽?

@Component({
    props:[]
})
export class TestComponent extends Widget{
    items:any[];
    render(h:any){
        const rootcmp = {
            template:`<div>
                Temp:<slot name="temp"></slot>
                Default:<slot></slot>
            </div>`
            , data:()=>{
                return {};
            }
        }
        const cmp = {
            template:'<div slot="default">This is child</div>'
            , data:()=>{
                return {};
            }
        }
        const cmp2 = {
            template:'<div slot="temp">This is child</div>'
            , data:()=>{
                return {};
            }
        }
        return h(rootcmp, [h(cmp), h(cmp2)]);
    }
}
Run Code Online (Sandbox Code Playgroud)

当前行为:

<div>
Temp:Default:
<div>This is child</div>
<div>This is child</div>
</div>
Run Code Online (Sandbox Code Playgroud)

预期行为:

<div>
Temp:
<div>This is child</div> …
Run Code Online (Sandbox Code Playgroud)

render slot createelement vue.js vuejs2

6
推荐指数
1
解决办法
960
查看次数

Vue.js - 父 &lt;-&gt; 插槽通信

我正在编写一小部分 Vue 组件来创建一个在未来项目中使用的库,但我对这个主题很困惑;也许我需要一种完全不同的方法,但我不知道......

我从(我认为这就是所谓的)策略模式中获得灵感:您创建一个模板组件,其行为取决于您作为参数传递的嵌套组件。例如,我创建了一个 Preview 组件,它拥有一个更改 bkg 图像的方法,并且我想在该组件中嵌套一个能够调用此方法的叠加层。由于这个覆盖层可以是我认为如果它嵌套在一个插槽中会很好的一切:

<template>
  <div class="preview" :class="{active: active}">
    <div class="content">
      <slot name="content"></slot>
    </div>
    <div class="overlay"><slot></slot></div>
    </div>
</template>
Run Code Online (Sandbox Code Playgroud)

(我将通过 img 列表使内容成为 v-for)

和js:

props: {
    content: {default: function () { return [] }}
  },
  data: function () {
    return {
      preview: null
    }
  },
  methods: {
    setPreview: function (e) {
      this.preview = e
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

然后是触发更改 onmouseover 的子组件:

<template>
  <div @mouseover="set">
    <slot></slot> <!-- some random content -->
  </div>
</template>

<script>
export default {
  props: ['target'] …
Run Code Online (Sandbox Code Playgroud)

communication parent-child slot vue-component vuejs2

6
推荐指数
1
解决办法
5068
查看次数

如何从 vue 3 中的 slot 获取 ref?

我需要将名称为test1 的ref 集中起来,设置一些值,该值放置在组件槽中(从外部)。有可能以某种方式做到这一点吗?我尝试从 $refs 或 $slots 获取,但失败了。

应用程序.vue

    <template>
      <div id="app">
        <HelloWorld>
          <input type="text" ref="test1" />
        </HelloWorld>
      </div>
    </template>
    
    ```
    <script>
    import HelloWorld from './components/HelloWorld.vue';
    
    export default {
      name: 'App',
      components: {
        HelloWorld,
      },
    };
    </script>
    
    <style>
    #app {
      font-family: Avenir, Helvetica, Arial, sans-serif;
      -webkit-font-smoothing: antialiased;
      -moz-osx-font-smoothing: grayscale;
      text-align: center;
      color: #2c3e50;
      margin-top: 60px;
    }
    </style>
Run Code Online (Sandbox Code Playgroud)

组件.vue

    <template>
      <slot></slot>
      <hr />
      <input type="text" ref="test2" />
    </template>
    
    <script>
    export default {
      name: 'HelloWorld',
      mounted() {
        this.$refs.test2.value = 'test 2 …
Run Code Online (Sandbox Code Playgroud)

ref slot vuejs3

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