我一直有很多次这个问题.
当我修改a QWidget之后的某些属性时widget.show(),小部件将不会更新.大多数情况下,鼠标单击或鼠标离开或进入窗口小部件时,窗口小部件将被更新.但是,如果我离开鼠标,它将不会自动刷新.
到目前为止,我设法通过以下方式处理:
widget.hide()
widget.show()
Run Code Online (Sandbox Code Playgroud)
但这是一个非常脏的修复.是否有更好的方法python来刷新小部件?
谢谢.
我有一个主要Widget和内部这个主要小部件我有QListWidget两个按钮.我已经覆盖了keyPressEvent主要小部件的内部(继承自QWidget).我可以keyPress在焦点未开启时收到事件QListWidget,但当焦点在QListWidget我内部时,我无法接收这些keyPress事件.以下是我用来实现此目的的代码:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setFocusPolicy(Qt::StrongFocus);
ui->listWidget->addItem(new QListWidgetItem("Item1"));
ui->listWidget->addItem(new QListWidgetItem("Item2"));
ui->listWidget->addItem(new QListWidgetItem("Item3"));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::keyPressEvent(QKeyEvent *event)
{
qDebug() << "event->key(): " << event->key();
QWidget::keyPressEvent(event);
}
Run Code Online (Sandbox Code Playgroud) 我有一个包含三个框架的主窗口。顶部框架包含页眉,底部框架包含页脚。我使用设计器进行PyQt4设计。当我在屏幕分辨率为的笔记本电脑上运行该窗口时,该窗口看起来不错1920*1080。但是,当我在其他分辨率上进行检查时,例如1600*900页脚被切断。我想知道是否有一种方法可以在运行时根据屏幕分辨率调整窗口大小,以便显示所有三个框架。我试图在线检查是否有任何解决方案,但找不到任何解决方案。我尝试使用window.setGeometry和window.setFixedSize函数,但是没有用。
该窗口的代码是:
import sys
import os
import threading
import smtplib
from PyQt4 import QtCore, QtGui, uic
import sched
import time
form_class = uic.loadUiType("FirstTest.ui")[0] # Load the UI
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
_fromUtf8 = lambda s: s
class MyWindowClass(QtGui.QMainWindow, form_class):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self, parent)
self.setupUi(self)
#has some code for the field values to be shown
app = QtGui.QApplication(sys.argv)
myWindow = MyWindowClass(None)
#myWindow.setFixedSize(500,500)
myWindow.showMaximized()
palette = QtGui.QPalette()
palette.setColor(QtGui.QPalette.Background,QtCore.Qt.white)
myWindow.setPalette(palette) …Run Code Online (Sandbox Code Playgroud) 我试图使用一些矢量数据的名称struct.我想知道在哪个名字qDebug()
更清楚:
const std::string& testName = "asdfqwer";
qDebug() << testName;
Run Code Online (Sandbox Code Playgroud)
它在构建中给出了错误消息:
Error: no match for 'operator<<' in 'qDebug()() << testName'
Run Code Online (Sandbox Code Playgroud)
我没有更改const std::string&类型的选项.你可以帮我解决这个问题而不改变类型吗?
我有个问题.我可以在窗口的网页上建立链接,当用户点击它时,网页将在浏览器中打开.例如:
import sys
from PyQt4 import QtGui, QtCore
app = QtGui.QApplication(sys.argv)
main = QtGui.QWidget()
main.setGeometry(200, 200, 200, 100)
label = QtGui.QLabel('<a href="http://stackoverflow.com/">Stackoverflow/</a>')
box = QtGui.QVBoxLayout()
box.addWidget(label)
main.setLayout(box)
main.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
是真的吗?
我有一个QUrl这样的:
https://www.example.com/index.html#token=SomeToken&user=guest
我想获取令牌的值 ie SomeToken。我知道方法QUrl::queryItemValue,所以这段代码必须有效:
void MainWindow::get_token(QUrl url)
{
url = url.toString().replace("?","#");
QString token = url.queryItemValue("token");
}
Run Code Online (Sandbox Code Playgroud)
但是Qt5我不能使用这个方法,我该如何解析url?
我正在尝试编写一个Qt调用 Web 服务的应用程序。这是一个控制台应用程序,url 将作为命令行参数传入。我搜索了示例http程序Qt并找到了这个链接:
http://qt-project.org/doc/qt-5/qnetworkaccessmanager.html
这里有以下代码示例:
QNetworkAccessManager *manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply*)),
this, SLOT(replyFinished(QNetworkReply*)));
manager->get(QNetworkRequest(QUrl("http://qt-project.org")));
Run Code Online (Sandbox Code Playgroud)
现在,如果我把它粘贴到我的控制台应用程序中main,我显然会收到构建错误,因为this它不存在。我得到:
invalid use of 'this' in non-member function
Run Code Online (Sandbox Code Playgroud)
QNetworkAccessManager非 GUI/控制台类型的应用程序是否有等价物?
我包含我的头文件:
#include <QtWebkit>
#include <QtWebkit/QWebView>
#include <QUrl>
Run Code Online (Sandbox Code Playgroud)
并添加到.pro文件中QT+=webkit
但Qt抛出错误:
未定义的引用
QWebView::load(QUrl const&)
我不知道为什么QWebView不起作用.
ui->webView->load(QUrl("http://google.com"));
Run Code Online (Sandbox Code Playgroud)
我用 Fedora 21 64 bit