2012-03-23 2 views
0

У меня есть QWebView в моих окнах, который содержит текст. Я хочу, чтобы выбранное слово (или слова, которое это не имеет значения) было написано где-то в другом месте, но выбор сигналаChanged никогда не вызывается. Нужно ли мне что-то задавать раньше? На данный момент все, что у меня есть, называется ожидающим слот ... Я даже ничего не делаю, потому что сигнал никогда не отправляетсяselectionChanged не вызывается, когда текст выбран в QWebView C#

спасибо!

#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()); 
} 
+0

Мы можем ХАЗ codez? – jdi

+0

Я сделал небольшой проект, чтобы показать, что я хочу делать ... ничего другого не было необходимо! – castors33

+0

Если я не читаю ваш пример неправильно, он очень похож на мой в python и мои работы ... не уверен ... – jdi

ответ

2

Я не уверен, почему приведенный вами пример не работал. Это работает (и это потому, что я подключен к странице, а не к виду). Я бы на самом деле рассмотрел вопрос об отправке отчета об ошибках с разработчиками, если бы был вами. С docs кажется, что это СЛЕДУЕТ работать.

каст:

#include "mainwindow.h" 
    #include <QWebView> 
    #include <QLineEdit> 
    #include <QVBoxLayout> 
    #include <QTimer> 

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent) 
{ 
    this->setupUi(); 
    connect(m_WebView->page(), SIGNAL(selectionChanged()), this, SLOT(newSelection())); 
} 

MainWindow::~MainWindow() 
{ 
} 

void MainWindow::setupUi() 
{ 
    m_WebView = new QWebView(); 
    m_WebView->load(QUrl("http://qt.nokia.com/")); 
    m_WebView->show(); 
    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()); 
} 

ч:

#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 
+0

Не понимаю, почему ... но ваш код работает ... странно странно ... но по крайней мере он работает! благодаря! – castors33

1

Я понятия не имею, что ваш код выглядит, но здесь является 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 излучается просто отлично и вызывает назначенный слот, когда я выбираю текст на веб-странице. Не уверен, что вы можете делать неправильно. Предоставьте некоторый код и наслаждайтесь этим халява.

+0

жаль, что я исправляю это – castors33

Смежные вопросы