我一直在努力研究广告位问题,但是随着Google搜索结果稳定增长,越来越紫色,我决定只问SO朋友=)请注意,我不使用QtCreator或任何动态的东西。我需要:
对于第1步,我这样声明QStrings:
QString set_1 = "ООО «Хеллманн» (129343, г. Москва, ул. Уржумская, д. 4, стр. 14, ИНН 7722637955, ОГРН 1087746168476) доверяет забор груза - ";
QString set_2 = " - перегружаемого из контейнера ";
QString set_3 = ", в количестве ";
QString set_4 = " паллет, весом ";
QString set_5 = " кг, водителю ";
QString set_6 = ", паспорт ";
QString set_7 = " выдан ";
QString set_8 = ".";
QString set_9 = " На автотранспортном средстве марки ";
QString set_10 = " - ";
QString set_11 = ", прицеп: ";
然后,对于第2步,我像这样从QLineEdits中制作QString(例如,line_b_b是QLineEdit的名称):
QString a = line_b_b.text();
QString b = line_b_a.text();
QString c = line_b_c.text();
QString d = line_b_d.text();
QString e = line_a_b.text();
QString f = line_a_a.text();
QString g = line_a_c.text();
QString h = line_a_d.text();
QString i = line_c_b.text();
QString j = line_c_a.text();
QString k = line_c_c.text();
对于第3步,我将第1步中的QString和第2步中的QString添加到名为“ doverka”的变量中(请不要介意这种西里尔字母的东西):
QString doverka = set_1+a+set_2+b+set_3+c+set_4+d+set_5+e+set_6+f+set_7+g+h+set_8+set_9+i+set_10+j+set_11+k+set_8;
最后,在步骤4中,我尝试在按下按钮时将整个内容放入QTextEdit。我想问题就在这里。我创建一个名为“ text”的QTextEdit:
QTextEdit text (&dw);
text.show();
然后我尝试创建一个插槽,我认为我这样做是完全错误的,因为它根本不起作用:
QPushButton btn_t ("Создать текст", &dw);
QObject::connect(
&btn_t,
SIGNAL(clicked()),
&text,
SLOT([dover](){return text.setText(doverka)}));
btn_t.show();
我对Qt和C ++还是陌生的,这就是为什么插槽创建不佳的原因。在这里,我已经使用lambda函数进行了尝试,但显然我做错了什么。也许我应该将lambda函数放在SLOT
之前的其他地方?在编译编时,无法识别出我的插槽,我收到“无此插槽”通知。也许问题出在较早的地方,例如从QLineEdits(步骤2)制作QString的过程中?我很无奈,非常感谢任何有用的技巧!非常感谢。
答案 0 :(得分:3)
您正在尝试将旧式Qt信号/插槽连接与新式混合使用,这显然不起作用。 lambda只能与新的连接样式一起使用。如果您使用的是Qt 5,则连接方式可能是:
QObject::connect(
&btn_t,
&QPushButton::clicked,
[&text, &doverka](){
text.setText(doverka);
});
请注意,在调用lambda之前,请勿破坏text
和doverka
对象,因为它们是通过引用捕获的。
如果使用Qt 4. *,则应使用旧语法。在您的情况下,只需在班级中提供一个插槽并连接信号即可:
QObject::connect(
&btn_t,
SIGNAL(clicked()),
this,
SLOT(onClicked()));
您的类应从QObject
继承,其中包含类似以下的位置:
public slots:
void onClicked() {
text.setText(doverka);
}
还要注意,text
和doverka
应该是该类的成员。