Qt-QLineEdit不会更新页面和URL

时间:2018-11-29 08:19:16

标签: c++ qt qlineedit qwebengineview

我的网络浏览器项目有一个小问题。每当我输入URL地址(通过QLineEdit)时,浏览器都不会显示该页面,而每当我更改页面时(通过单击包含起始页面的站点),该地址都不会显示在URL栏上。 / p>

这是我的mainwindow.cpp代码。该程序执行并以代码0退出。我在函数(changeUrlBar(QUrl)和setUrl())中使用qDebug进行了尝试,结果发现该程序输入了这些函数,但它们没有执行任何操作。每个建议都将不胜感激。

    String a1 = input.nextLine();
    if (!dayArray.contains(a1))
        System.out.println("invalid day , please enter another day : ");
    else {
        System.out.println("day really nice day");
    }

2 个答案:

答案 0 :(得分:0)

我现在感觉像个白痴,因为我设法解决了这个问题,唯一要做的事情是删除以下几行:

QLineEdit *urlBar = new QLineEdit;
QWebEngineView *browserView = new QWebEngineView(parent);

因为这些对象已经初始化。

答案 1 :(得分:0)

您的实际问题是,您定义了两个局部变量(urlBarbrowserView),它们隐藏了MainWindow::urlBarMainWindow::browserView的声明。

那些本地对象是添加到用户界面的那些对象,但是在插槽中,您正在使用成员对象(那些未包含在UI中的对象)。即使在构造函数中对其进行了初始化,它们也不会接收用户输入,也不会显示在用户界面上。

MainWindow::MainWindow(QWidget *parent) :
// ...
    QLineEdit *urlBar = new QLineEdit; // <-- local variable hiding member declaration
    QProgressBar *progressBar = new QProgressBar;
    // WebEngineView - actual web browser
    QWebEngineView *browserView = new QWebEngineView(parent); // <-- local variable hiding member declaration
// ...

void MainWindow::changeUrlBar(QUrl)
{
    urlBar->setText(browserView->url().toString()); // <-- urlBar and browserView are members
}

道德:避免隐藏或意识到它;)。用于减少这种情况的一些技巧总是通过thisthis->urlBar)访问成员,或者对成员使用不同的表示法(例如m_urlBar或{{1 }})。另外,许多编译器都应该对此发出警告。