使用类似http://example.com的URL调用函数CheckSite(),它初始化QNetworkAccessManager对象和connect()槽和信号.
manger-> get()调用似乎有效(它生成http流量),但在请求结束时不调用插槽replyFinished().
这段代码出了什么问题?
#include <QtCore>
#include <QtNetwork>
class ClientHandler : public QObject
{
Q_OBJECT
QNetworkAccessManager *manager;
private slots:
void replyFinished(QNetworkReply *);
public:
void CheckSite(QString url);
};
void ClientHandler::replyFinished(QNetworkReply *reply) { qDebug() << "DONE"; }
void ClientHandler::CheckSite(QString url) {
QUrl qrl(url);
manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));
manager->get(QNetworkRequest(qrl));
}
Run Code Online (Sandbox Code Playgroud) 我想知道是否可以使用分离的png文件制作插槽动画效果,任何文件都将是符号,并在特定的时间周期结束后,例如在旋转2秒后?有些人用jquery做了一台老虎机http://eyecon.ro/slotmachine/但是他用gif文件做动画.
我想知道do_something()
当我点击时该函数是否被视为新线程my_button
.
connect(my_button, SIGNAL(clicked), this, SLOT(do_something));
Run Code Online (Sandbox Code Playgroud) 我想在QObjects
不修改其他信号/插槽行为的情况下,一般地和暂时地阻止两者之间的信号,并且不知道它们的上下文.
像QObject :: blockSignals(bool)之类的东西,但只在两个之间起作用QObjects
.
也就是说,实现以下SignalBlocker::blockSignals(bool)
功能:
class SignalBlocker {
public:
SignalBlocker(QObject *sender, QObject *receiver) :
mSender(sender), mReceiver(receiver) {}
void blockSignals(bool block);
private:
QObject *mSender, *mReceiver;
}
Run Code Online (Sandbox Code Playgroud)
通过断开和重新连接对象是可能的,但首先必须存储信号/时隙列表.似乎自省方法不足够强大来实现这一(我看了看QMetaObject
,并QSignalSpy
没有成功).
我有2节课.A级和B级.我发出A级信号,我希望B接收.
我是这样做的
在监听器文件中
Header File:
Class Listener:public DDSDataReaderListener
{
//Some code
public:
A m_objectSendData;
}
Run Code Online (Sandbox Code Playgroud)
实施档案:
void Listener::ondataavailable(DDSDataReader *reader)
{
m_objSendData.GetDDSData();
}
Run Code Online (Sandbox Code Playgroud)
在A班
头文件:
Class A:public QObject
{
Q_OBJECT
public:
void GetDDSData();
signals:
void Signal_Data();
}
Run Code Online (Sandbox Code Playgroud)
.cpp文件
A::A(QWidget *parent):QObject(parent)
{
}
void A::GetDDSData()
{
emit Signal_Data();
}
Run Code Online (Sandbox Code Playgroud)
在B班
Header File:
Class B:public QObject
{
Q_Object
public:
A objGetData;
public slots:
void getData();
}
Implementation File:
B::B(QWidget *parent):QObject(parent)
{
//Some part of code
connect(&objGetData,SIGNAL(Signal_Data()),this,SLOT(getData());
}
void B::getData()
{
//Watever is to …
Run Code Online (Sandbox Code Playgroud) 我想用qt 5.1将qml信号连接到qt插槽.我不能在这个版本的qt中使用DeclarativeView.我的qml元素是一个简单的矩形,onClicked事件启动信号.
Rectangle{
id:test
width: 200
height: 50
x: 10
y: 10
signal qmlSignal()
MouseArea {
hoverEnabled: false
anchors.fill: parent
onClicked: {
console.log("geklickt")
test.qmlSignal()
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个带有此标头的SignalslotlistView类:
class SignalslotlistView: public QObject{
Q_OBJECT
public slots:
void cppSlot(const QString &msg);
Run Code Online (Sandbox Code Playgroud)
};
和.cpp
void SignalslotlistView::cppSlot(const QString &msg) {
qDebug() << "Called the C++ slot with message:" << msg;}
Run Code Online (Sandbox Code Playgroud)
在MainWindow类中,我尝试设置连接:
view->setSource(QUrl::fromLocalFile("main.qml"));
QObject *object = (QObject *)view->rootObject();
QObject *rect = object->findChild<QObject*>("test");
SignalslotlistView myClass;
QObject::connect(rect, SIGNAL(qmlSignal()),
&myClass, SLOT(cppSlot()));
Run Code Online (Sandbox Code Playgroud)
视图来自QQuickView类型.
但什么都没发生.谢谢.
我在创建带有信号和插槽的 QPushButton 时遇到问题。首先,我创建了一个类,其中插槽:
class A : public QWidget{
public slots:
void handleButton();
};
Run Code Online (Sandbox Code Playgroud)
有我的 handleButton 功能:在 .cpp 中
void A::handleButton(int row, int col){
m_button->setText("Example");
// resize button
m_button->resize(100,100);
}
Run Code Online (Sandbox Code Playgroud)
然后我想连接按钮。
QObject::connect(m_button, SIGNAL(clicked()),qApp, SLOT(handleButton()));
Run Code Online (Sandbox Code Playgroud)
但是当我启动应用程序时出现错误:“没有这样的插槽”有人可以帮助我吗?
我在弄清楚如何使以下各项工作方面遇到困难:
我的父母模板
<comp>
<a href="#" slot="links>link 1</a>
<a href="#" slot="links>link 2</a>
</comp>
Run Code Online (Sandbox Code Playgroud)
我的组件comp
模板如下所示:
<ul class="comp">
<li class="comp-item"><slot name="links"></slot></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
目前,我所有的定位li
标记都转到了单个标记(这是预期的),但是我希望能够为li
插入的每个命名插槽生成多个标记,如下所示:
<ul class="comp">
<li class="comp-item"><a href="#" slot="links>link 1</a></li>
<li class="comp-item"><a href="#" slot="links>link 2</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
有什么方法可以在不使用作用域插槽的情况下实现我所需要的?因为我的内容是纯HTML,所以我觉得没有必要将静态内容放入prop中以进行呈现。
从我所看到的情况来看,大多数vue UI框架都要求您为列表项使用另一个自定义组件,我觉得这个问题已被淘汰。还有其他方法吗?
我目前正在开发一个Qt项目,我在SLOT方面遇到了一些麻烦.我想传递一个指向成员函数的指针作为SLOT的参数.为此,我在课堂上宣布了SLOT,但是当我这样做时,我得到了MOC错误.我不知道我想要达到的目标是否可行.
名为MainFrame的类的语法示例:
void slotAnswerReceived (QString answer, void (MainFrame::*ptr)(QString));
Run Code Online (Sandbox Code Playgroud)
我没有任何连接,没有使用该功能,我唯一的错误是在上面的这一行.
谢谢大家的帮助.我在网上找不到任何解决方案(但是如果有人感兴趣,我发现这篇文章深入解释了SIGNAL和SLOT).
我有 n 个按钮最初都标记为“0”。当程序运行时,这些标签或值将更改为不同的整数,例如在某些时候我可能有:'7'、'0'、'2'、...
我有一个将 int 作为参数的函数(或插槽):
void do_stuff(int i);
Run Code Online (Sandbox Code Playgroud)
我想在按下“x”时调用 do_stuff(x)。即:当按下任何按钮时,使用该按钮的值调用 do_stuff。我怎样才能做到这一点?到目前为止,我有类似的东西:
std::vector values; // keeps track of the button values
for (int i = 0; i < n; i++){
values.push_back(0);
QPushButton* button = new QPushButton("0");
layout->addWidget(button);
// next line is nonsense but gives an idea of what I want to do:
connect(button, SIGNAL(clicked()), SLOT(do_stuff(values[i])));
}
Run Code Online (Sandbox Code Playgroud) slot ×10
qt ×7
signals ×5
c++ ×4
animation ×1
components ×1
javascript ×1
jquery ×1
qml ×1
qobject ×1
qpushbutton ×1
qt4 ×1
qt5.1 ×1
vue.js ×1
vuejs2 ×1