qt在插槽之间共享变量
我很难弄清楚如何跨插槽使用变量。我已经阅读了信号和插槽页面好几次了,还没有弄清楚如何使用连接功能。我试图用一个按钮来选择目录,然后当我点击print时将它发送到另一个插槽,这样它就可以使用该目录。谢谢你的帮助qt在插槽之间共享变量,qt,qstring,Qt,Qstring,我很难弄清楚如何跨插槽使用变量。我已经阅读了信号和插槽页面好几次了,还没有弄清楚如何使用连接功能。我试图用一个按钮来选择目录,然后当我点击print时将它发送到另一个插槽,这样它就可以使用该目录。谢谢你的帮助 void MainWindow::on_pushButton_clicked() { QApplication app(int argc, char** argv()); int n = 107; for (int q = 1; q <= n; q++) { QSt
void MainWindow::on_pushButton_clicked()
{
QApplication app(int argc, char** argv());
int n = 107;
for (int q = 1; q <= n; q++)
{
QString fileName =(folderName + "/batch_%1.jpg").arg(q);
// QPrinter printer;
//QPrintDialog *dlg = new QPrintDialog(&printer,0);
//if(dlg->exec() == QDialog::Accepted) {
QPrinter printer(QPrinter::HighResolution);
printer.setResolution(300);
printer.setCopyCount(1);
printer.setDoubleSidedPrinting(false);
printer.setDuplex(QPrinter::DuplexNone);
printer.setColorMode(QPrinter::Color);
printer.setPageSize(QPrinter::Letter);
printer.setPaperSize(QPrinter::Letter);
printer.setPaperSource(QPrinter::Auto);
printer.setOrientation(QPrinter::Portrait);
printer.setPageMargins(0.0, 0.0, 0.0, 0.0, QPrinter::Inch);
QString outputFileName = QStringLiteral("/Users/alexdotzler/Desktop/testing/test%1.pdf").arg(q);
printer.setOutputFileName(outputFileName);
printer.setOutputFormat(QPrinter::PdfFormat);
QImage img(fileName);
QPainter painter(&printer);
painter.drawImage(QPoint(0,0),img);
painter.end();
}
//delete dlg;
}
void MainWindow::on_pushButton_2_clicked()
{
QString folderName = QFileDialog::getExistingDirectory(0, ("Select file"), QDir::currentPath());
}
void主窗口::在按钮上点击()
{
QApplication应用程序(int argc,char**argv());
int n=107;
for(int q=1;q exec()==QDialog::Accepted){
QPrinter打印机(QPrinter::高分辨率);
打印机设置分辨率(300);
打印机。设置CopyCount(1);
打印机。设置双面打印(假);
打印机.setDuplex(QPrinter::DuplexOne);
printer.setColorMode(QPrinter::Color);
printer.setPageSize(QPrinter::Letter);
打印机。设置纸张大小(QPrinter::Letter);
printer.setPaperSource(QPrinter::Auto);
打印机设置方向(QPrinter::纵向);
打印机设置页边距(0.0,0.0,0.0,0.0,QPrinter::Inch);
QString outputFileName=QStringLiteral(“/Users/alexdotzler/Desktop/testing/test%1.pdf”).arg(q);
打印机.setOutputFileName(outputFileName);
打印机.setOutputFormat(QPrinter::PdfFormat);
QImage img(文件名);
Q油漆工和打印机;
绘制图像(QPoint(0,0),img);
结束();
}
//删除dlg;
}
void main window::在按钮上点击按钮
{
QString folderName=QFileDialog::getExistingDirectory(0,(“选择文件”),QDir::currentPath());
}
首先,请记住。这不仅与示例有关,还与最小值有关。在这种情况下,不需要打印代码
根据您的问题,插槽只是类的函数。在您的情况下,您可以创建打印功能,该功能将从按钮1和按钮2调用
另外,不要等待来自sig/slots的真正魔法。看起来像,但不是。当调用函数A时,将插槽连接到信号只是对函数B的虚拟调用
然后让我们深入了解一下信号和插槽的世界
使
folderName
成为main窗口
类的成员,以便通过单击按钮的插槽访问该类。然后,您可以根据需要从这些插槽读取/写入它
// foo.h
class First {
...
signals:
void newData(QVariant val);
};
// bar.h
class Another {...
public slots:
void getNewData(QVariant val);
};
// main.cpp
Another another1;
First first1;
QObject::connect(first1, &First::newData, another1, &Another::getNewData);