交换 Qt 小部件
Swap Qt Widgets
我 运行 遇到了问题。我想交换两个 Qt 小部件:
void swap(QMainWindow **w1, QMainWindow **w2)
{
QMainWindow *w3;
w3 = *w1;
*w1 = *w2;
*w2 = w3;
}
但是如果我有 widget1
类型 MainWindow1*
和 widget2
类型 MainWindow2*
并且我调用 swap(&widget1, &widget2);
我得到
/home/user/Test/manager.cpp:24: error: invalid conversion from 'MainWindow1**' to 'QMainWindow**' [-fpermissive]
swap(&widget1, &widget2);
^
我必须注意 MainWindow1
和 MainWindow2
是两个 QMainWindow
派生的 类。
我的问题是:是否可以创建一个在运行时交换两个多态对象的函数?我怎样才能解决这个问题?
非常感谢!
您不应该传递 MainWindow1
和 MainWindow2
指针进行交换,如下所示。
MainWindow1* w1 = new MainWindow1();
MainWindow2* w2 = new MainWindow2();
swap(&w1, &w2);
如果交换 可以 在这种情况下发生,MainWindow1
指针将指向 MainWindow2
对象,这是不正确的。
你必须传递 MainWindow
指针来交换,如下所示。
MainWindow* w1 = new MainWindow1();
MainWindow* w2 = new MainWindow2();
swap(&w1, &w2);
我 运行 遇到了问题。我想交换两个 Qt 小部件:
void swap(QMainWindow **w1, QMainWindow **w2)
{
QMainWindow *w3;
w3 = *w1;
*w1 = *w2;
*w2 = w3;
}
但是如果我有 widget1
类型 MainWindow1*
和 widget2
类型 MainWindow2*
并且我调用 swap(&widget1, &widget2);
我得到
/home/user/Test/manager.cpp:24: error: invalid conversion from 'MainWindow1**' to 'QMainWindow**' [-fpermissive]
swap(&widget1, &widget2);
^
我必须注意 MainWindow1
和 MainWindow2
是两个 QMainWindow
派生的 类。
我的问题是:是否可以创建一个在运行时交换两个多态对象的函数?我怎样才能解决这个问题?
非常感谢!
您不应该传递 MainWindow1
和 MainWindow2
指针进行交换,如下所示。
MainWindow1* w1 = new MainWindow1();
MainWindow2* w2 = new MainWindow2();
swap(&w1, &w2);
如果交换 可以 在这种情况下发生,MainWindow1
指针将指向 MainWindow2
对象,这是不正确的。
你必须传递 MainWindow
指针来交换,如下所示。
MainWindow* w1 = new MainWindow1();
MainWindow* w2 = new MainWindow2();
swap(&w1, &w2);