我正在使用 Qt5。
我有一个非常简单的对话框类,它继承自 QDialog。
我有一个使用这个对话框的类,还有一个 QFileDialog:
NameDlg m_name_dlg;
QFileDialog m_file_dlg;
Run Code Online (Sandbox Code Playgroud)
这个类还有一些插槽来处理对话框关闭:
private slots:
void on_dlgName_accepted();
void on_FileDlgClosed(int result);
Run Code Online (Sandbox Code Playgroud)
在构造函数中,我做了一些连接:
QObject::connect(&m_file_dlg, SIGNAL(finished(int)),
this, SLOT(on_FileDlgClosed(int)));
QObject::connect(&m_name_dlg, SIGNAL(accepted()),
this, SLOT(on_dlgName_accepted()));
Run Code Online (Sandbox Code Playgroud)
第一次调用 connect 没问题,但第二次调用会生成输出:
QMetaObject::connectSlotsByName: No matching signal for on_dlgName_accepted()
Run Code Online (Sandbox Code Playgroud)
奇怪的是,当名称对话框被接受时,我的插槽被正确调用!
QDialog 的文档(和头文件)说:
Signals
void accepted()
Run Code Online (Sandbox Code Playgroud)
所以这不是参数不匹配。
正如我上面所说,信号被正确调用,所以我的代码一切正常,我真的很想理解为什么我会收到这个警告(作为教育练习)并摆脱它(为了安心)。
我不能发布完整的代码,但我相信应该有足够的人来理解这个问题。
我尝试过的事情:
改用finished()。
投射&m_name_dialog到QDialog *.
将信号更改为QDialog::accepted()。
提前致谢。
我有一个QWidget,其中以下项目以垂直布局排列:
- QWidget
- QVBoxLayout
- QPushButton
- QPushButton
- QPushButton
- QListView
- QComboBox
Run Code Online (Sandbox Code Playgroud)
现在,我想将QComboBox排列为与其中一个按钮水平对齐。我给booton设置了一个36 x 16777215的maximumSize,它位于小部件的左上方。如何使组合框在其右侧对齐?这是我目前拥有的屏幕截图:
该函数QDate::toString(const QString &format)允许显示月份名称MMM(例如“Jan”到“Dec”)或MMMM(例如“January”到“December”)。
但是这个函数使用来自QLocale::system()(源代码)的系统区域设置。
QDate对于特定的 QLocale显示带有月份名称的最简单方法是什么?
我正在尝试使用 QT 捕获图像,并将图像缓冲区写入 QBuffer 类的对象中,而不是将其保存到文件中。
到目前为止,这是我的代码:
mBuffer->open(QBuffer::ReadWrite);
mCameraImageCapture->setCaptureDestination(QCameraImageCapture::CaptureToBuffer);
QImageEncoderSettings imageEncoderSettings;
imageEncoderSettings.setCodec("image/BMP");
mCameraImageCapture->setEncodingSettings(imageEncoderSettings);
mCamera->setCaptureMode(QCamera :: CaptureStillImage);
mCamera->start();
mCamera->searchAndLock();
mCamera->unlock();
mBuffer->close();
Run Code Online (Sandbox Code Playgroud)
是否可以将图像捕获到缓冲区中而不将其保存到文件中?
如果用户在 GUI 中修改了特定元素,我在使用 Qt 方法更新 DataFrame 时遇到问题。
例如,当我运行以下代码时,我得到一个显示随机值的 10 x 3 DataFrame。如果我尝试将任何单元格更改为值 400,我双击,键入 400,然后按 Enter。当我打印 DataFrame 时,该值仍然是旧值。我希望 DataFrame 单元格在用户更改值时更新。
非常感谢!
import sys
import numpy as np
import pandas as pd
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QIcon, QColor
from PyQt5.QtCore import pyqtSlot, Qt, QTimer
class App(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(700, 100, 350, 380)
self.createTable()
self.layout = QVBoxLayout()
self.layout.addWidget(self.tableWidget)
self.button = QPushButton('Print DataFrame', self)
self.layout.addWidget(self.button)
self.setLayout(self.layout)
self.button.clicked.connect(self.print_my_df)
self.tableWidget.doubleClicked.connect(self.on_click_table)
self.show()
def createTable(self):
self.tableWidget = QTableWidget()
self.df_rows = 10 …Run Code Online (Sandbox Code Playgroud) 我正在使用 matplotlib 找到图像的边缘。我几乎已经完成了。我想在绘图中将图像旋转 90 度。但它对我不起作用。我尝试了很多东西。下面是我的代码试过了。
from scipy import misc
from skimage import color,measure
import matplotlib.pyplot as plt
from skimage.draw import ellipse
from skimage.measure import find_contours, approximate_polygon, subdivide_polygon
from PIL import Image
import numpy as np
filename = r"images/5601.jpg"
fimg = misc.imread(filename)
gimg = color.colorconv.rgb2grey(fimg)
contours = measure.find_contours(gimg, 0.8)
for n, contour in enumerate(contours):
plt.plot(contour[:, 1], contour[:, 0], linewidth=2)
contour = contours[0]
new_s = contour.copy()
appr_s = approximate_polygon(new_s, tolerance=0.8)
fig, ax2 = plt.subplots(ncols=1, figsize=(7, 5))
ax2.plot(contour[:, 0], contour[:, 1])
#these are …Run Code Online (Sandbox Code Playgroud) 我在 PyQt5 中创建了一个表并填充它,类似于它在这篇文章中的完成方式。我想居中对齐所有单元格,但是当我尝试对齐每个单元格时,我的 QTableWidgetItem 变为无。
根据文档 setTextAlignment(QtCore.Qt.AlignVCenter | QtCore.Qt.AlignHCenter)应该可以工作。见这里太
这是一个工作示例,其中 self.db_table 是 QTableWidget。
for row in rows:
inx = rows.index(row)
self.db_table.insertRow(inx)
self.db_table.setItem(inx, 0, QTableWidgetItem(str(row[0])))
self.db_table.setItem(inx, 1, QTableWidgetItem(str(row[1])))
self.db_table.setItem(inx, 2, QTableWidgetItem(str(row[2])))
self.db_table.setItem(inx, 3, QTableWidgetItem(str(row[3])))
self.db_table.setItem(inx, 4, QTableWidgetItem(str(row[4])))
Run Code Online (Sandbox Code Playgroud)
当我添加setTextAlignment()它时,所有 QTableWidgetItems 都没有:
for row in rows:
inx = rows.index(row)
self.db_table.insertRow(inx)
self.db_table.setItem(inx, 0, QTableWidgetItem(str(row[0])).setTextAlignment(QtCore.Qt.AlignVCenter | QtCore.Qt.AlignHCenter))
self.db_table.setItem(inx, 1, QTableWidgetItem(str(row[1])).setTextAlignment(QtCore.Qt.AlignVCenter | QtCore.Qt.AlignHCenter))
self.db_table.setItem(inx, 2, QTableWidgetItem(str(row[2])).setTextAlignment(QtCore.Qt.AlignVCenter | QtCore.Qt.AlignHCenter))
self.db_table.setItem(inx, 3, QTableWidgetItem(str(row[3])).setTextAlignment(QtCore.Qt.AlignVCenter | QtCore.Qt.AlignHCenter))
self.db_table.setItem(inx, 4, QTableWidgetItem(str(row[4])).setTextAlignment(QtCore.Qt.AlignVCenter | QtCore.Qt.AlignHCenter)) …Run Code Online (Sandbox Code Playgroud) 是否有 PyQt QTextEdit禁用选择/突出显示和/或右键单击显示文本方法?或者至少禁用剪贴板功能,例如复制?谢谢。
为了澄清这个问题的非重复性,我正在谈论这个。在尝试单击并拖动显示文本的一部分时,我不想要任何突出显示的东西。
我正在尝试从我的 csv 数据文件制作图表。我的代码如下:
for name in per_data.dtype.names[2:]:
plt.plot(per_data['RELEASE'],per_data[name],label=name)
plt.legend(loc='upper left',prop = {'size':7},bbox_to_anchor=(1,1))
plt.tight_layout(pad=5)
plt.xlabel ('Release')
plt.ylabel ('Time/Sec')
plt.title ('Ingest Performance Test')
plt.grid()
plt.show()
Run Code Online (Sandbox Code Playgroud)
我的csv数据是:
DATE RELEASE 10GB 100GB 200GB 400GB 600GB 800GB 1000GB
5/5/16 2.67 0.36 4.18 8.54 18 27 38 46
5/5/16 2.68 0.5 4.24 9.24 18 27 37 46
5/6/16 2.69 0.32 4.3 9.18 19 29 37 46
5/6/16 2.7 0.35 4.3 9.3 19 28 37 46
5/6/16 2.71 0.3 4.18 8.18 16 24 33 41
Run Code Online (Sandbox Code Playgroud)
如您所见,我使用第二列 -- …
我想通过按 QPushButton 来删除 QTableView 小部件中的行。该代码对于单行工作正常,但是,当我选择多行时,总是会遗漏一行。
这是我到目前为止所拥有的:
主界面
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>350</width>
<height>239</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<widget class="QWidget" name="formLayoutWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>341</width>
<height>231</height>
</rect>
</property>
<layout class="QFormLayout" name="formLayout">
<item row="0" column="1">
<widget class="QPushButton" name="btnPopulate">
<property name="text">
<string>Populate Table</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QTableView" name="tableView">
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="btnDelete">
<property name="text">
<string>Delete Row(s)</string>
</property> …Run Code Online (Sandbox Code Playgroud) python ×5
pyqt ×4
qt ×4
c++ ×3
pyqt5 ×3
matplotlib ×2
qt5 ×2
qtablewidget ×2
alignment ×1
camera ×1
pandas ×1
pyqt4 ×1
python-3.x ×1
qbuffer ×1
qdate ×1
qlocale ×1
qt-creator ×1
qt-signals ×1
qtableview ×1
svg ×1
widget ×1