我的网络浏览器项目有一个小问题。每当我输入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");
}
答案 0 :(得分:0)
我现在感觉像个白痴,因为我设法解决了这个问题,唯一要做的事情是删除以下几行:
QLineEdit *urlBar = new QLineEdit;
QWebEngineView *browserView = new QWebEngineView(parent);
因为这些对象已经初始化。
答案 1 :(得分:0)
您的实际问题是,您定义了两个局部变量(urlBar
和browserView
),它们隐藏了MainWindow::urlBar
和MainWindow::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
}
道德:避免隐藏或意识到它;)。用于减少这种情况的一些技巧总是通过this
(this->urlBar
)访问成员,或者对成员使用不同的表示法(例如m_urlBar
或{{1 }})。另外,许多编译器都应该对此发出警告。