【发布时间】:2021-10-09 14:41:35
【问题描述】:
我有一个带有典型打印机对话框的程序(使用 Qt5.1 中的 QPrintDialog 制作),您可以在其中从列表中选择所需的打印机。假设您有printerA(默认选择)、printerB、printerC 和printerD。我的打印机有问题,所以当用户选择它时,我想做一些事情(可能显示弹出消息或禁用某些按钮)。
我一直在寻找如何知道是否选择了printerD 但找不到它。我在QPrinter、QPrinterInfo、QPrintDialog 和QDialog 中搜索,但找不到。另外我在这里找到了this,虽然它可以帮助我,但答案只告诉你如何设置默认值。
如果你不知道我说的是哪个对话框,那和here一样。
我也在考虑这个列表是否可能是一个 QListWidget 类,但如果是这样,我不知道如何获得它。
所以我的问题是:我如何知道在此 PrinterDialog 生命的任何时刻选择了哪台打印机? (出现时)。
另外,我想补充一点,我试图禁用打印机的按钮,这给了我下一个代码的错误,但 QList 是空的,所以我无法使用打印或首选项按钮来禁用它我没有'不知道为什么:
QList<QPrinterInfo> info_list = QPrinterInfo::availablePrinters();
foreach(QPrinterInfo info, info_list)
{
if (info.state() == 3) // the printer gives error
{
QList<QPushButton *> allButtons = printDialog.findChildren<QPushButton *>();
for (int i = 0; i < allButtons.size(); i++)
{
if (allButtons.at(i)->text().contains("Print") || allButtons.at(i)->text().contains("Preferences"))
{
allButtons.at(i)->setDisabled(true);
}
}
}
}
提前谢谢你。
【问题讨论】:
标签: c++ qt c++11 printing qprinter