Qt 在QWebView C中选择文本时,不会调用selectionChanged
我的窗口中有一个包含文本的QWebView。我想要所选的一个或多个单词,写在其他地方并不重要,但信号selectionChanged永远不会被调用。我需要先做些什么吗?现在,我所拥有的只是一个等待呼叫的插槽…我现在甚至不做任何事情,因为信号从未发送过 谢谢Qt 在QWebView C中选择文本时,不会调用selectionChanged,qt,qwebview,selectionchanged,Qt,Qwebview,Selectionchanged,我的窗口中有一个包含文本的QWebView。我想要所选的一个或多个单词,写在其他地方并不重要,但信号selectionChanged永远不会被调用。我需要先做些什么吗?现在,我所拥有的只是一个等待呼叫的插槽…我现在甚至不做任何事情,因为信号从未发送过 谢谢 #include "mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { this->setupUi();
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent)
{
this->setupUi();
connect(m_WebView, SIGNAL(selectionChanged()), this, SLOT(newSelection()));
}
MainWindow::~MainWindow()
{
}
void MainWindow::setupUi()
{
m_WebView = new QWebView();
m_LineEdit = new QLineEdit();
QVBoxLayout* lay = new QVBoxLayout();
lay->addWidget(m_LineEdit);
lay->addWidget(m_WebView);
QWidget* wid = new QWidget(this);
wid->setLayout(lay);
setCentralWidget(wid);
}
void MainWindow::newSelection()
{
m_LineEdit->setText(m_WebView->selectedText());
}
我不知道您的代码是什么样子的,但下面是一个PyQt完全工作的示例:
from PyQt4 import QtCore, QtGui, QtWebKit
class Dialog(QtGui.QDialog):
def __init__(self, parent=None):
super(Dialog, self).__init__()
self.resize(800,600)
self.web = QtWebKit.QWebView()
layout = QtGui.QVBoxLayout(self)
layout.addWidget(self.web)
self.web.setUrl(QtCore.QUrl("http://www.stackoverflow.com/"))
self.web.selectionChanged.connect(self.selectionChanged)
def selectionChanged(self):
print self.web.selectedText()
if __name__ == "__main__":
app = QtGui.QApplication([])
dialog = Dialog()
dialog.show()
dialog.raise_()
app.exec_()
当我在网页上选择文本时,selectionChanged信号会很好地发出并调用指定的插槽。不确定你可能做错了什么。提供一些代码,享受这个免费赠品。我不知道你的代码是什么样子,但这里有一个PyQt完全工作的示例:
from PyQt4 import QtCore, QtGui, QtWebKit
class Dialog(QtGui.QDialog):
def __init__(self, parent=None):
super(Dialog, self).__init__()
self.resize(800,600)
self.web = QtWebKit.QWebView()
layout = QtGui.QVBoxLayout(self)
layout.addWidget(self.web)
self.web.setUrl(QtCore.QUrl("http://www.stackoverflow.com/"))
self.web.selectionChanged.connect(self.selectionChanged)
def selectionChanged(self):
print self.web.selectedText()
if __name__ == "__main__":
app = QtGui.QApplication([])
dialog = Dialog()
dialog.show()
dialog.raise_()
app.exec_()
当我在网页上选择文本时,selectionChanged信号会很好地发出并调用指定的插槽。不确定你可能做错了什么。提供一些代码,享受这个免费赠品。我不知道你给出的示例为什么不起作用。这是有效的,因为我连接的是页面而不是视图。事实上,如果我是你的话,我会考虑向DVS提交bug报告。从表面上看,这似乎是可行的 cpp: h:
我不知道你举的例子为什么不起作用。这是有效的,因为我连接的是页面而不是视图。事实上,如果我是你的话,我会考虑向DVS提交bug报告。从表面上看,这似乎是可行的 cpp: h:
我做了一个小节目只是为了展示我想做什么…其他任何事情都是不必要的!除非我读错了你的例子,它看起来很像我的python,我的工作原理…不确定…是的,它看起来像…我不懂python…但它在我的项目中不工作。我想重点是我没有在WebView上设置任何属性或任何特殊的东西,除了直接将信号连接到一个方法。您是否尝试过打印而不是在行编辑上设置值,以确保其符合您的新闻选择方法?我认为这是Qt4.6中的一个错误,因为Qt4.7是在应用修补程序1个月后发布的。或者你忘了在你的类定义中使用Q_对象宏。我做了一个小程序只是为了展示我想做什么…其他任何事情都不是必需的!除非我读错了你的例子,它看起来很像我的python,我的工作原理…不确定…是的,它看起来像…我不懂python…但它在我的项目中不工作。我想重点是我没有在WebView上设置任何属性或任何特殊的东西,除了直接将信号连接到一个方法。您是否尝试过打印而不是在行编辑上设置值,以确保其符合您的新闻选择方法?我认为这是Qt4.6中的一个错误,因为Qt4.7是在应用修补程序1个月后发布的。或者你忘了在你的类定义中使用Q_对象宏。我不明白为什么…但是你的代码可以工作…有点奇怪…但至少它可以工作!谢谢我不明白为什么…但你的代码工作…有点奇怪…但至少它工作!谢谢
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class QWebView;
class QLineEdit;
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
void setupUi();
protected slots:
void newSelection();
private:
Ui::MainWindow *ui;
QWebView * m_WebView;
QLineEdit * m_LineEdit;
};
#endif // MAINWINDOW_H