Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 在QWebView C中选择文本时,不会调用selectionChanged_Qt_Qwebview_Selectionchanged - Fatal编程技术网

Qt 在QWebView C中选择文本时,不会调用selectionChanged

Qt 在QWebView C中选择文本时,不会调用selectionChanged,qt,qwebview,selectionchanged,Qt,Qwebview,Selectionchanged,我的窗口中有一个包含文本的QWebView。我想要所选的一个或多个单词,写在其他地方并不重要,但信号selectionChanged永远不会被调用。我需要先做些什么吗?现在,我所拥有的只是一个等待呼叫的插槽…我现在甚至不做任何事情,因为信号从未发送过 谢谢 #include "mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { this->setupUi();

我的窗口中有一个包含文本的QWebView。我想要所选的一个或多个单词,写在其他地方并不重要,但信号selectionChanged永远不会被调用。我需要先做些什么吗?现在,我所拥有的只是一个等待呼叫的插槽…我现在甚至不做任何事情,因为信号从未发送过

谢谢

#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