这个网站真的很棒,我要感谢回答我帖子的任何人。您可能会发现我的帖子是一个转发的转发,因为它还是关于QLineEdit的检索数据。我一直在努力寻找问题的整个2天,通过hudge stackoverflow数据库,但我找不到答案。
基本上,我想从QLineEdit检索IP地址,从QLineEdit检索端口号,这样做:
myclass::myclass(QWidget *parent = 0)
{
_mainuilayout = new QGridLayout();
ipAddress = new QLineEdit();
portnumber = new QLineEdit();
QFormLayout *connect2adress = new QFormLayout();
connect2adress->addRow("Ip Adress : ", ipAddress);
connect2adress->addRow("Port number : ", portnumber);
_launch = new QPushButton("Launch server");
_mainuilayout->addWidget(_launch);
_mainuilayout->addLayout(connect2adress);
QObject::connect(_launch, SIGNAL(clicked()), this, SLOT(setipAddress()));
QObject::connect(_launch, SIGNAL(clicked()), this, SLOT(setportnumber()));
server->connectTo(thisaddress,thisport);
QObject::connect(_launch, SIGNAL(clicked()), server, SLOT(launchserver()));
}
在这里,您获得了将IP地址存储在QString中的代码,thisaddress是在标头以及thisport中定义的QString
void myclass::setipAddress()
{
thisaddress = ipAddress->text();
}
void myclass::setportnumber()
{
thisport = portnumber->text().toShort();
}
我想要的是,当我单击启动按钮时,它将来自QLineEdit的数据存储在此地址和此端口中,以便我可以启动服务器,这是connectTo的代码
void server::connectTo(QString ipAdress,quint16 port)
{
if(!ipAdress.isEmpty() && port != 0 )
{
ipAddress = ipAdress;
portnumber = port;
}
}
当我将QLineEdit转换为QString时,问题真的来了,因为当我像这样直接分配thisAddress和thisportnumber时,
thisAddress = "127.0.0.1"
thisportnumber = 5855
我得到了这个错误:
Unsupported socket Operation
你们有什么答案可以帮助我吗?
我已经尝试遵循该栈文章Store QLineEdit's data into a QString upon a QPushButton click中给出的解决方案
但是它仍然无法正常工作,如果我发现有什么让我知道的话,我仍在努力!
感谢您的回复!
最佳答案
自从我使用Qt以来已经有很多年了,但是我没有人回答您的问题,所以我加两分钱。
将事件连接到多个插槽时,我认为您不会期望特定的呼叫顺序。您正在连接clicked()
按钮上的_launch
事件,以填充IP地址和端口号,并调用launchserver()
。但是您需要先调用其他两个插槽。
最好将它连接到单个插槽,这将更新相应的成员值,然后进行连接。
关于c++ - 单击QPushButton时,将数据从QLineEdit转换为QString。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15606269/